8图片这样的网站怎么做的,做门户网站啥意思,微信开放平台账号怎么注销,我是做网站的Go语言基础语法 Hello World变量常量定义if 判断语句for 循环语句#xff08;只有for#xff09;switch 选择语句数组#xff08;较少使用#xff09;切片#xff08;较多使用#xff09;map#xff08;实际最常用#xff09;range函数指针结构体结构体方法错误处… Go语言基础语法 Hello World变量常量定义if 判断语句for 循环语句只有forswitch 选择语句数组较少使用切片较多使用map实际最常用range函数指针结构体结构体方法错误处理字符串操作字符串格式化JSON操作时间处理数字解析进程信息 Hello World
package mainimport (fmt
)func main() {fmt.Println(Hello World)
}变量常量定义
仅定义不使用会报错 a declared but not used golang仅定义变量而未赋值的话则初始值为假int为0bool为falsestring为‘
package mainimport (fmtmath
)func main() {//定义变量//仅定义不使用会报错 a declared but not usedvar a initialvar b, c int 1, 2var d true//golang仅定义变量而未赋值的话则初始值为假int为0bool为falsestring为‘var e float64f : float32(e)g : a foofmt.Println(a, b, c, d, e, f) //initial 1 2 true 0 0fmt.Println(g) //initialfoo//定义常量const s string constantconst h 500000const i 3e20 / hfmt.Println(s, h, i, math.Sin(h), math.Sin(i))
}if 判断语句
if后面不需要写括号编译器会自动去掉 语句内容必须有大括号“{}”
package mainimport fmtfunc main() {//if后面不需要写括号编译器会自动去掉//语句内容必须有大括号“{}”if 7%2 0 {fmt.Println(7 is even)} else {fmt.Println(7 is odd)}if 8%4 0 {fmt.Println(8 is divisible by 4)}if num : 9; num 0 {fmt.Println(num, is negative)} else if num 10 {fmt.Println(num, has 1 digit)} else {fmt.Println(num, has multiple digits)}
}
for 循环语句只有for
Go语言中只有for循环语句
package mainimport fmtfunc main() {i : 1for {fmt.Println(loop)break}for j : 0; j 10; j {fmt.Println(j)}for n : 0; n 5; n {if n%2 0 {continue}fmt.Println(n)}for i 3 {fmt.Println(i)i i 1}
}
switch 选择语句
package mainimport (fmttime
)func main() {a : 2switch a {case 1:fmt.Println(one)case 2:fmt.Println(two)case 3:fmt.Println(three)case 4, 5:fmt.Println(four or five)default:fmt.Println(other)}//可以使用任意类型变量写switcht : time.Now()switch {case t.Hour() 12:fmt.Println(Its before noon)default:fmt.Println(Its after noon)}
}数组较少使用
固定长度
package mainimport fmtfunc main() {var a [5]inta[4] 100fmt.Println(a[4], len(a))b : [5]int{1, 2, 3, 4, 5}fmt.Println(b)var twoD [2][3]intfor i : 0; i 2; i {for j : 0; j 3; j {twoD[i][j] i j}}fmt.Println(2d: , twoD)
}
切片较多使用
动态长度
package mainimport fmtfunc main() {s : make([]string, 3)s[0] as[1] bs[2] cfmt.Println(get:, s[2]) //get: cfmt.Println(len:, len(s)) //len: 3s append(s, d)s append(s, e, f)fmt.Println(s) //[a b c d e f]c : make([]string, len(s))copy(c, s)fmt.Println(c) //[a b c d e f]fmt.Println(s[2:5]) //[c d e]fmt.Println(s[:5]) //[a b c d e]fmt.Println(s[2:]) //[c d e f]good : []string{g, o, o, d}fmt.Println(good) //[g o o d]
}map实际最常用
完全无序随机输出
package mainimport fmtfunc main() {m : make(map[string]int)m[one] 1m[two] 2fmt.Println(m) //map[one:1 two:2]fmt.Println(len(m)) // 2fmt.Println(m[one]) // 1fmt.Println(m[unknow]) // 0r, ok : m[unknow] //0 flasefmt.Println(r, ok)delete(m, one) //删除m2 : map[string]int{one: 1, two: 2}var m3 map[string]int{one: 1, two: 2}fmt.Println(m2, m3) //map[one:1 two:2] map[one:1 two:2]
}
range
package mainimport fmtfunc main() {nums : []int{2, 3, 4}sum : 0for i, num : range nums {sum numif num 2 {fmt.Println(index:, i, num:, num) // index: 0 num: 2}}fmt.Println(sum) // 9m : map[string]string{a: A, b: B}for k, v : range m {fmt.Println(k, v) // b 8; a A}for k : range m {fmt.Println(key, k) // key a; key b}
}
函数
package mainimport fmtfunc add(a int, b int) int {return a b
}func add2(a, b int) int {return a b
}func exists(m map[string]string, k string) (v string, ok bool) {v, ok m[k]return v, ok
}func main() {res : add(1, 2)fmt.Println(res) // 3v, ok : exists(map[string]string{a: A}, a)fmt.Println(v, ok) // A True
}
指针
package mainimport fmtfunc add2(n int) {n 2
}func add2ptr(n *int) {*n 2
}func main() {n : 5add2(n)fmt.Println(n) // 5add2ptr(n)fmt.Println(n) // 7
}
结构体
package mainimport fmttype user struct {name stringpassword string
}func main() {a : user{name: wang, password: 1024}b : user{wang, 1024}c : user{name: wang}c.password 1024var d userd.name wangd.password 1024fmt.Println(a, b, c, d) // {wang 1024} {wang 1024} {wang 1024} {wang 1024}fmt.Println(checkPassword(a, haha)) // falsefmt.Println(checkPassword2(a, haha)) // false
}func checkPassword(u user, password string) bool {return u.password password
}func checkPassword2(u *user, password string) bool {return u.password password
}
结构体方法
package mainimport fmttype user struct {name stringpassword string
}func (u user) checkPassword(password string) bool {return u.password password
}func (u *user) resetPassword(password string) {u.password password
}func main() {a : user{name: wang, password: 1024}a.resetPassword(2048)fmt.Println(a.checkPassword(2048)) // true
}
错误处理
package mainimport (errorsfmt
)type user struct {name stringpassword string
}func findUser(users []user, name string) (v *user, err error) {for _, u : range users {if u.name name {return u, nil}}return nil, errors.New(not found)
}func main() {u, err : findUser([]user{{wang, 1024}}, wang)if err ! nil {fmt.Println(err)return}fmt.Println(u.name) // wangif u, err : findUser([]user{{wang, 1024}}, li); err ! nil {fmt.Println(err) // not foundreturn} else {fmt.Println(u.name)}
}
字符串操作
package mainimport (fmtstrings
)func main() {a : hellofmt.Println(strings.Contains(a, ll)) // truefmt.Println(strings.Count(a, l)) // 2fmt.Println(strings.HasPrefix(a, he)) // truefmt.Println(strings.HasSuffix(a, llo)) // truefmt.Println(strings.Index(a, ll)) // 2fmt.Println(strings.Join([]string{he, llo}, -)) // he-llofmt.Println(strings.Repeat(a, 2)) // hellohellofmt.Println(strings.Replace(a, e, E, -1)) // hEllofmt.Println(strings.Split(a-b-c, -)) // [a b c]fmt.Println(strings.ToLower(a)) // hellofmt.Println(strings.ToUpper(a)) // HELLOfmt.Println(len(a)) // 5b : 你好fmt.Println(len(b)) // 6
}
字符串格式化
package mainimport fmttype point struct {x, y int
}func main() {s : hellon : 123p : point{1, 2}fmt.Println(s, n) // hello 123fmt.Println(p) // {1 2}fmt.Printf(s%v\n, s) // shellofmt.Printf(n%v\n, n) // n123fmt.Printf(p%v\n, p) // p{1 2}fmt.Printf(p%v\n, p) // p{x:1 y:2}fmt.Printf(p%#v\n, p) // pmain.point{x:1, y:2}f : 3.141592653fmt.Println(f) // 3.141592653fmt.Printf(%.2f\n, f) // 3.14
}JSON操作
只要结构体的每个成员第一个字母都是大写这个结构体就可以使用json.Marshal方法序列化输出时想要小写的成员名就加上 json:age 打印时需要做string转换
package mainimport (encoding/jsonfmt
)type userInfo struct {Name stringAge int json:ageHobby []string
}func main() {a : userInfo{Name: wang, Age: 18, Hobby: []string{Golang, TypeScript}}buf, err : json.Marshal(a)if err ! nil {panic(err)}fmt.Println(buf) // [123 34 78 97...]fmt.Println(string(buf)) // {Name:wang,age:18,Hobby:[Golang,TypeScript]}buf, err json.MarshalIndent(a, , \t)if err ! nil {panic(err)}fmt.Println(string(buf))var b userInfoerr json.Unmarshal(buf, b)if err ! nil {panic(err)}fmt.Printf(%#v\n, b) // main.userInfo{Name:wang, Age:18, Hobby:[]string{Golang, TypeScript}}
}时间处理
不同于Java YYYY-MM-dd的方法go语言用特定时间指示格式
package mainimport (fmttime
)func main() {now : time.Now()fmt.Println(now) // 2022-03-27 18:04:59.433297 0800 CST m0.000087933t : time.Date(2022, 3, 27, 1, 25, 36, 0, time.UTC)t2 : time.Date(2022, 3, 27, 2, 30, 36, 0, time.UTC)fmt.Println(t) // 2022-03-27 01:25:36 0000 UTCfmt.Println(t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute()) // 2022 March 27 1 25fmt.Println(t.Format(2006-01-02 15:04:05)) // 2022-03-27 01:25:36diff : t2.Sub(t)fmt.Println(diff) // 1h5m0sfmt.Println(diff.Minutes(), diff.Seconds()) // 65 3900t3, err : time.Parse(2006-01-02 15:04:05, 2022-03-27 01:25:36)if err ! nil {panic(err)}fmt.Println(t3 t) // truefmt.Println(now.Unix()) // 1648738080
}
数字解析
strconv.ParseInt中的参数10表示10进制写0的情况下自动推测64表示精度
package mainimport (fmtstrconv
)func main() {f, _ : strconv.ParseFloat(1.234, 64)fmt.Println(f) // 1.234n, _ : strconv.ParseInt(111, 10, 64)fmt.Println(n) // 111n, _ strconv.ParseInt(0x1000, 0, 64)fmt.Println(n) // 4096n2, _ : strconv.Atoi(123)fmt.Println(n2) // 123n2, err : strconv.Atoi(AAA)fmt.Println(n2, err) // 0 strconv.Atoi: parsing AAA: invalid syntax
}
进程信息
package mainimport (fmtosos/exec
)func main() {// go run example/20-env/main.go a b c dfmt.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))buf, err : exec.Command(grep, 127.0.0.1, /etc/hosts).CombinedOutput()if err ! nil {panic(err)}fmt.Println(string(buf)) // 127.0.0.1 localhost
}