设置国内代理
go env -w GOPROXY=https://goproxy.cn,direct
设置环境变量
#export PATH=$PATH:/home/lmk/go/bin export GOROOT=/usr/local/go #设置为go安装的路径,有些安装包会自动设置默认的goroot export GOPATH=$HOME/gocode #默认安装包的路径 export PATH=$PATH:$GOROOT/bin export PATH=$PATH:$GOPATH/bin export GO111MODULE=on export PATH=$PATH:/home/lmk/jdk8/bin export PATH=$PATH:/home/lmk/anaconda3/bin export PATH=$PATH:/home/lmk/桌面/edition/idea-IU-201.7846.76/bin export PATH=$PATH:/home/lmk/桌面/edition/GoLand-2020.1.3/bin export PATH=$PATH:/home/lmk/桌面/edition/pycharm-2020.1.2/bin
helloworld
package main import "fmt" func main() { a, b := "hello", "world" fmt.Println(a, b) }
定义变量
go 定义变量
函数外的每个语句都必须以关键字开始(var
、func
、等等),:=
结构不能使用在函数外。
常量的定义与变量类似,只不过使用 const 关键字。
常量不能使用 := 语法定义。
// 直接定义 f := "hellow" //指定变量类型 var s1 string = " ni hao"
定义函数
单个返回值的函数 不需要 加 ()
func swap(a string, b string) (string , string)
func add(a int, b int) int
package main import "fmt" func main() { a, b := "hello", "world" fmt.Println(swap(a,b)) } func swap(a string, b string) (string , string) { return b,a }
json 与 go 结构体变量转换
!!! go 中的变量 以及结构体中的变量 一定要 大写
否则会导致转换失败
go数据 -> json 数据
// ` json :"json键名"` 制定幻化json后的 键名 ,如果不指定的话 // 默认是 字段名称 比如 Year1 type mydata struct{ Year1 string Month1 string `json:"month"` Day1 string `json:"day"` }
package main import ( "fmt" "encoding/json" ) // 结构体 中的 数据 一定要 开头大写`json:"year" ` type mydata struct{ Year1 string Month1 string `json:"month"` Day1 string `json:"day"` } func main(){ mydata_1 := []mydata{ {"1","2","3"}, {"2","4","6"} } json_mydata , resinfo1 := json.Marshal(mydata_1) fmt.Println(string(json_mydata),resinfo1) }
output
[{"Year1":"1","month":"2","day":"3"},{"Year1":"2","month":"4","day":"6"}] <nil>
如果变量不大写
[{},{}] <nil>
json数据 ->go 变量
package main import ( "encoding/json" "fmt" "reflect" ) // 结构体 中的 数据 一定要 开头大写`json:"year" ` type mydata struct { Year1 string Month1 string `json:"month"` Day1 string `json:"day"` } func main3() { mydata_1 := []mydata{{"1", "2", "3"}, {"2", "4", "6"}} json_mydata, resinfo1 := json.Marshal(mydata_1) fmt.Println(string(json_mydata), resinfo1) json_byt1 := []byte(`{"num":613,"strs":["a","b"]}`) var loud_json1 map[string]interface{} _ = json.Unmarshal(json_byt1, &loud_json1) num1 := loud_json1["num"] fmt.Println(num1) fmt.Println(reflect.TypeOf(num1)) }
多种变量求和
package main import ( "fmt" // "reflect" // "honnef.co/go/tools/arg" ) //https://vim.wxnacy.com/ func addnumber(arg []int) int { sum1 :=0 for _ ,n :=range arg{ sum1+=n } return sum1 } func addstr(arg []string) string { sum1:="" for _,n :=range arg{ sum1=sum1+n } return sum1 } func addfloat64(arg []float64) float64{ sum1:=0.0 for _,n :=range arg{ sum1=sum1+n } return sum1 } func addvar(var1 interface{}) interface{} { // type1 := reflect.TypeOf(var1) var varsum interface{} switch var1.(type){ case []string: varsum = addstr(var1.([]string)) case []int: varsum = addnumber(var1.([]int)) case []float64: varsum = addfloat64(var1.([]float64)) } return varsum } func main() { strlist1:= []string{"1","1","2"} fmt.Println(addvar(strlist1)) intlist1:= []int{3,4,5,6} fmt.Println(addvar(intlist1)) float64list1:= []float64{1.1,2.3,4.4,5} fmt.Println(addvar(float64list1)) }