上一期我们说完了一部分基础语法,本次将继续说基础语法,说完语法我们将链接 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个项目视频,让你从菜鸟变大神
这是视频的目录,大家各取所需:
需要以上视频的,请私信我。谢谢大家。