变量
package main
import "fmt"
func main(){
var a string ="big mouse"
var a1 = 10
a2:=2.1111
fmt.Println(a,a1,a2)
}
if-else
package main
import "fmt"
func main(){
var a=10
if a>10{
fmt.Println("大于十!!!")
}else{
fmt.Println("小于十!!!")
}
}
循环
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
fmt.Printf("%d\n", i)
}
}
switch
package main
import "fmt"
func main() {
var a int
fmt.Println("请输入一个数字!!!")
fmt.Scanln(a)
switch a{
case 1:
fmt.Println("1")
case 2:
fmt.Println("2")
case 3:
fmt.Println("3")
}
}
数组
package main
import "fmt"
func main() {
var a [10]int
a[0] = 0
a[1] = 1
a[2] = 2
fmt.Println(a)
a1 := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
fmt.Println(a1)
a2 := []int{1, 2, 3}
fmt.Println(a2)
a3 := [2][3]int{{1, 2, 2}, {1, 2, 2}}
fmt.Println(a3)
var a4 [2][3]int
for i := 0; i < 2; i++ {
for j := 0; j < 3; j++ {
a4[i][j] = 0
}
}
fmt.Println(a4)
}
切片
package main
import "fmt"
func main() {
slice :=make([]int,3)
slice[0]=1
slice[1]=2
slice[2]=3
slice=append(slice,1)
slice=append(slice,1,2)
fmt.Println(slice)
s:=make([]int,len(slice))
copy(s,slice)
fmt.Println(s)
s1:=[]int{1,2,3}
s1=append(s1,1)
fmt.Println(s1)
}
map
package main
import "fmt"
func main() {
a:=make(map[string]int)
a["1"]=1
a["2"]=2
a["3"]=3
fmt.Println(a)
a1:=map[string]int{"1":1,"2":2}
fmt.Println(a1)
var a2 =map[string]int{"1":1,"2":2}
fmt.Println(a2)
delete(a2,"1")
fmt.Println(a2)
}
-range
package main
import "fmt"
func main() {
a:=[5]int{1,2,3,4,5}
for k,v:=range(a){
fmt.Println(k,v)
}
a1:=map[string]int{"1":1,"2":2}
for k:=range(a1){
fmt.Println(k)
}
}
函数
package main
import "fmt"
func Handle(a int,b int)int{
var c=a+b
return c
}
func main() {
fmt.Println(Handle(1,2))
}
指针
package main
import "fmt"
func Handle(a int)int{
a+=1
return a
}
func Handle1(a *int)int{
*a+=1
return *a
}
func main() {
var a=1
fmt.Println(Handle(a))
fmt.Println(a)
fmt.Println(Handle1(&a))
fmt.Println(a)
}
结构体
package main
import "fmt"
type User struct{
Username string
Passord string
}
func main() {
a:=User{Username:"1",Passord:"2"}
a1:=User{"1","2"}
a2:=User{Username:"1"}
a2.Passord="2"
var d User
d.Passord="1"
d.Username="2"
fmt.Println(a)
fmt.Println(a1)
fmt.Println(a2)
fmt.Println(d)
}
结构体方法
package main
import "fmt"
type User struct{
Username string
Passord string
}
func(a User)Handle(a1 string){
a.Username=a1
}
func(a *User)Handle1(a1 string){
a.Username=a1
}
func main() {
a2:=User{Username:"1",Passord:"2"}
a2.Handle("wang")
fmt.Println(a2.Username)
a2.Handle1("wang")
fmt.Println(a2.Username)
}
错误处理
package main
import (
"errors"
"fmt"
)
type user struct {
name string
password 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)
if u, err := findUser([]user{{"wang", "1024"}}, "li"); err != nil {
fmt.Println(err)
return
} else {
fmt.Println(u.name)
}
}
字符串操作
package main
import (
"fmt"
"strings"
)
func main() {
a := "hello"
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))
fmt.Println(len(a))
b := "你好"
fmt.Println(len(b))
}
字符串格式化
package main
import "fmt"
type point struct {
x, y int
}
func main() {
s := "hello"
n := 123
p := point{1, 2}
fmt.Println(s, n)
fmt.Println(p)
fmt.Printf("s=%v\n", s)
fmt.Printf("n=%v\n", n)
fmt.Printf("p=%v\n", p)
fmt.Printf("p=%+v\n", p)
fmt.Printf("p=%#v\n", p)
f := 3.141592653
fmt.Println(f)
fmt.Printf("%.2f\n", f)
}
JSON处理
package main
import (
"encoding/json"
"fmt"
)
type userInfo struct {
Name string
Age int `json:"age"`
Hobby []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)
fmt.Println(string(buf))
buf, err = json.MarshalIndent(a, "", "\t")
if err != nil {
panic(err)
}
fmt.Println(string(buf))
var b userInfo
err = json.Unmarshal(buf, &b)
if err != nil {
panic(err)
}
fmt.Printf("%#v\n", b)
}
时间处理
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println(now)
t := 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)
fmt.Println(t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute())
fmt.Println(t.Format("2006-01-02 15:04:05"))
diff := t2.Sub(t)
fmt.Println(diff)
fmt.Println(diff.Minutes(), diff.Seconds())
t3, err := time.Parse("2006-01-02 15:04:05", "2022-03-27 01:25:36")
if err != nil {
panic(err)
}
fmt.Println(t3 == t)
fmt.Println(now.Unix())
}
数字解析
package main
import (
"fmt"
"strconv"
)
func main() {
f, _ := strconv.ParseFloat("1.234", 64)
fmt.Println(f)
n, _ := strconv.ParseInt("111", 10, 64)
fmt.Println(n)
n, _ = strconv.ParseInt("0x1000", 0, 64)
fmt.Println(n)
n2, _ := strconv.Atoi("123")
fmt.Println(n2)
n2, err := strconv.Atoi("AAA")
fmt.Println(n2, err)
}
进程信息
package main
import (
"fmt"
"os"
"os/exec"
)
func main() {
fmt.Println(os.Args)
fmt.Println(os.Getenv("PATH"))
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))
}