与C语言比较
是以包为引用单位的
包内的方法和变量的使用范围是根据首字母是否大小写来定的
if后面的条件可以不使用()
switch 不用写break case后面可以加上多个条件,逗号分隔
defer 后面的方法会在被return 之前调用
有时会造成为申请到资源就释放
在定义的时候就已经可以定义需要执行的方法
变量定义和js很像
var str string //先定义变量
str = "name"
str1 := "str1" //定义变量并赋值,如果定义一个已有的变量就会报错
db, _ = sql.Open("mysql", "root:shang123@tcp(127.0.0.1:3306)/test_s3?charset=utf8")
db.SetMaxOpenConns(2000)
db.SetMaxIdleConns(1000)
db.Ping()
defer db.Close() //在return之前会被释放
刚看了个比较有意思的,类内的局部变量,在返回局部变量的指针时,C中使用会抛异常,因为在C语言中局部变量申请空间在堆上,函数结束栈空间释放,但是在Golang中,编译器会识别出这种情况,变量申请的空间会在堆上面,不会回收空间;
package main
import (
"fmt"
)
func main() {
pNum := printInt();
fmt.Println(*pNum)
}
func printInt() * int64{
var num int64
num = 200
fmt.Println(num)
return &num
}
200
200