七叶笔记 » golang编程 » golang go语言之基础语法二 文后有Java福利

golang go语言之基础语法二 文后有Java福利

上一期我们说完了一部分基础语法,本次将继续说基础语法,说完语法我们将链接 mysql 数据库实现增删改查的操作,同时还将分享Java20套项目资料。精彩不容错过呦~~

一、Go 语言运算符

go语言和其他的编程语言一样,也有很多的运算符,用来在程序中执行数字或者逻辑的运算。接下来让我们学习一下各个运算符的介绍:

1.1算术运算符

假设Tom 是5 Cat是10

例子:

package main

import “fmt”

func main() {

var a int = 21

var b int = 10

var c int

c = a + b

fmt.Printf(“第一行c 的值为 %d\n”, c )

c = a – b

fmt.Printf(“第二行c 的值为 %d\n”, c )

c = a * b

fmt.Printf(“第三行c 的值为 %d\n”, c )

c = a / b

fmt.Printf(“第四行 c 的值为 %d\n”, c )

c = a % b

fmt.Printf(“第五行c 的值为 %d\n”, c )

a++

fmt.Printf(“第六行c 的值为 %d\n”, a )

a–

fmt.Printf(“第七行c 的值为 %d\n”, a )

}

试一下,go run运行,检测一下是否正确。

1.2 关系运算符

例子:

package main

import “fmt”

func main() {

var a int = 3

var b int = 2

if( a == b ) {

fmt.Printf(“等于\n” )

} else {

fmt.Printf(“不等于\n” )

}

}

参照上面的例子,自己动手编写其他的运算。

1.3 逻辑运算符

逻辑运算符挺常用。

例子;

package main

import “fmt”

func main() {

var a bool = true

var b bool = false

if ( a && b ) {

fmt.Printf(“a&&b为 true\n” )

}

}

其他例子请参照编写。

1.4 位运算符

& 按位与,|按位或,^按位异或(相同为0,不同为1)。

<< 左移,左移n位就是乘以2的n次方

>>右移,右移n位就是除以2的n次方

1.5 赋值运算符

例子:

package main

import “fmt”

func main() {

var a int = 21

var c int

c = a

fmt.Printf(“c 值为 = %d\n”, c )

}

1.6 其他运算符

例子:

package main

import “fmt”

func main() {

var a int = 4

var ptr *int

fmt.Printf(“a 变量类型为 = %T\n”, a );

ptr = &a

fmt.Printf(“a 的值为 %d\n”, a);

fmt.Printf(“*ptr 为 %d\n”, *ptr);

}

2.1 go语言的条件语句

简单来说这里面有下面这些条件语句:

此处说起来的就会很多,你知道什么意思之后,具体要等到使用时看情况吧,也可以参考其他编程语言,不过要注意的是go语言的格式。

2.2 循环语句

例子;

package main

import “fmt”

func main() {

for {

fmt.Printf(“这是死循环。\n”);

}

}

判断1-100的素数:

package main

import “fmt”

func main() {

var C, c int//声明变量

C=1

A: for C < 100 {

C++

for c=2; c < C ; c++ {

if C%c==0 {

goto A //若发现因子则不是素数

}

}

fmt.Println(C,”是素数”)

}

}

到这里基本的语法就差不多了,后面还有函数,数组,指针,结构体,切片,Map,接口等的提高阶段,等到下次我会给大家分享关于这方面的视频。

二、连接MySQL数据库实现增删改查

1.1 下载驱动

sudo go get github.com/go-sql-driver/mysql

如果提示这样的失败信息:cannot download, $GOPATH not set. For more details see: go help gopath,可以使用如下命令解决

sudo env GOPATH=/usr/local/go go get github.com/go-sql-driver/mysql

GOPATH的值根据自行环境进行替换。

1.2 数据库连接

数据库连接使用datebase/sql Open函数进行连接

db, err := sql.Open(“mysql”, “user:password@tcp(localhost:3306)/dbname?charset=utf8”)

1.3 完整的代码:

package main

import (

“database/sql” //数据库连接包

“fmt”

_ “github.com/go-sql-driver/mysql” // 上面下载的驱动,这里只加载init函数

)

func main() {

insert()

}

//插入

func insert() {

db, err := sql.Open(“mysql”, “root:@/test?charset=utf8”)

checkErr(err)

stmt, err := db.Prepare(`INSERT user (user_name,user_age,user_sex) values (?,?,?)`)

checkErr(err)

res, err := stmt.Exec(“tony”, 20, 1)

checkErr(err)

id, err := res.LastInsertId()

checkErr(err)

fmt.Println(id)

}

//查询

func query() {

db, err := sql.Open(“mysql”, “root:@/test?charset=utf8”)

checkErr(err)

rows, err := db.Query(“SELECT * FROM user”)

checkErr(err)

//普通

//for rows.Next() {

//
var userId int

//
var userName string

//
var userAge int

//
var userSex int

//
rows.Columns()

//
err = rows.Scan(&userId, &userName, &userAge, &userSex)

//
checkErr(err)

//
fmt.Println(userId)

//
fmt.Println(userName)

//
fmt.Println(userAge)

//
fmt.Println(userSex)

//}

//字典类型

//构造scanArgs、values两个数组,scanArgs的每个值指向values相应值的地址

columns, _ := rows.Columns()

scanArgs := make([]interface{}, len(columns))

values := make([]interface{}, len(columns))

for i := range values {

scanArgs[i] = &values[i]

}

for rows.Next() {

//将行数据保存到record字典

err = rows.Scan(scanArgs…)

record := make(map[string]string)

for i, col := range values {

if col != nil {

record[columns[i]] = string(col.([]byte))

}

}

fmt.Println(record)

}

}

//更新数据

func update() {

db, err := sql.Open(“mysql”, “root:@/test?charset=utf8”)

checkErr(err)

stmt, err := db.Prepare(`UPDATE user SET user_age=?,user_sex=? WHERE user_id=?`)

checkErr(err)

res, err := stmt.Exec(21, 2, 1)

checkErr(err)

num, err := res.RowsAffected()

checkErr(err)

fmt.Println(num)

}

//删除数据

func remove() {

db, err := sql.Open(“mysql”, “root:@/test?charset=utf8”)

checkErr(err)

stmt, err := db.Prepare(`DELETE FROM user WHERE user_id=?`)

checkErr(err)

res, err := stmt.Exec(1)

checkErr(err)

num, err := res.RowsAffected()

checkErr(err)

fmt.Println(num)

}

func checkErr(err error) { // 检查是否有致命的错误

if err != nil {

panic(err)

}

}

整体上来说都比较简单,就是查询那边使用字典来存储返回数据比较复杂一些。数据库表大家自己建立一个,用来测试用的表不需要太复杂。

三、Java20个项目视频,让你从菜鸟变大神

这是视频的目录,大家各取所需:

需要以上视频的,请私信我。谢谢大家。

相关文章