package main //导入main包 import ( "fmt" “math” )//fmt包,用于输入和输出字符串、格式化字符串; math用于输入数字类型
func main() //主函数 { //输出函数 fmt.Println("。。。")用于输出
//定义变量
方式一:
var a ="sadaf"//字符
var b int = 1 //数字
var c = true //布尔
var e float64 //声明变量类型
方式二:
f := float32(e)// 变量+类型+值
g :=a+"sff"//直接声明,并且进行字符拼接
//常量: 可自动根据上下文确定类型
const s string = "asfas"
const h = 5000
//if语句:条件不需要括号
if num:=10; num<9{
fmt.Println(num, "is no 10")
}
else if ...
else...
//循环:只有for循环,不需要括号
for j :=7; j<10 ; j++{
。。。。
}
//switch语句:条件不加括号,条件可以是任何类型,不需要加break
//switch语句还可以在寻找上加条件
t :=time.Now()
switch {
case t.hour<12:
结果1
default:
结果2
}
//数组
var a [10] int // 定义1
b := [2] int{1,2} //定义2: 数组变量名 := [num] 类型{值}
var twoD [][] int
//切片
s := make([] string, 3) // s := make([] 类型, 长度)
copy(a,b)//把b复制到a
append(a, 'a')// 切片a后加入a
fmt.Println(s[2:5]) //输入第2到第4个字符
//map(python中的字典); 遍历map时,数据是随机的
m :=make(map [string] int )// 此处key为string,value为int
//输入ky对
m["one "] = 1
r, ok := m["two"]//判断m中是否有two。ok = false
//range: 遍历
range(m)//便利上述字典
//函数: 变量在前,类型在后
func add (a int, b int ) int{
...
}
func exist(m map[string]sting, k string )(v string, ok bool){
.......
return v, ok //一般返回2个,一个是值,一个是错误信息
}
// 指针:p *int
//结构体
type user struct{
name string
password string
}
定义:var d user
访问元素: d.name =
//错误处理,一般在定义函数返回值时设置错误返回
import{
"error"
}
func find (uses []user, name string) (v *user, err error)
//字符串操作
fmt.Println(strings.Contains(a, "ll")) // 是否含有字符
fmt.Println(strings.Count(a, "l")) // 含有字符数
fmt.Println(strings.HasPrefix(a, "he")) // 是否含有前缀
fmt.Println(strings.HasSuffix(a, "llo")) // 是否含有后缀
fmt.Println(strings.Index(a, "ll")) // 字符第一次出现的位置
fmt.Println(strings.Join([]string{"he", "llo"}, "-")) // 插入字符
fmt.Println(strings.Repeat(a, 2)) // 重复输入字符
fmt.Println(strings.Replace(a, "e", "E", -1)) // 替换字符
fmt.Println(strings.Split("a-b-c", "-")) // 删除对于字符
fmt.Println(strings.ToLower(a)) // 换成小写
fmt.Println(strings.ToUpper(a)) //换成大写
len(a) //求字符长度(文字占3个长度)
//fmt操作
s := "hello"
n := 123
p := point{1, 2}
fmt.Println(s, n) // hello 123
fmt.Println(p) // {1 2}
fmt.Printf("s=%v\n", s) // s=hello
fmt.Printf("n=%v\n", n) // n=123
fmt.Printf("p=%v\n", p) // p={1 2} //%v只输出对应值
fmt.Printf("p=%+v\n", p) // p={x:1 y:2} // %+v输出整个point类型定义
fmt.Printf("p=%#v\n", p) // p=main.point{x:1, y:2} //%#v输出整个函数字段
f := 3.141592653
fmt.Println(f) // 3.141592653
fmt.Printf("%.2f\n", f) // 3.14 // %.n输入n位小数
//json :数列化,输出的是16进制编码
输入字符是需要转化
import (
"encoding/json"
"fmt"
)
buf, err := json.Marshal(a)
fmt.Println(buf) // [123 34 78 97...]
fmt.Println(string(buf)) // {"Name":"wang","age":18,"Hobby":["Golang","TypeScript"]}
//数字解析:把字符转成数字
import{ “strconv”}
n, _ := strconv.ParseInt("111", 10, 64) //(字符,进制,操作位)
n2, _ := strconv.Atoi("123") //自动解析
//进程信息
import{
"os"
"os/exec"
}
fmt.Println(os.Args) // [/var/folders/8p/n34xxfnx38dg8bv_x8l62t_m0000gn/T/go-build3406981276/b001/exe/main a b c d] //获取系统信息
fmt.Println(os.Getenv("PATH")) // /usr/local/go/bin... ///获取环境变量
fmt.Println(os.Setenv("AA", "BB")) //获取环境变量