基本练习

格式化 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
func main(){
    fmt.Printf("this is %s", "jab") // 字符串显示
    fmt.Println()
    fmt.Printf("this is %x", "jab") // 16进制显示
    fmt.Println()
    fmt.Printf("this is %.3f", 3.33333)     // 浮点型显示
    fmt.Println()
    fmt.Printf("this is %b", 100)       // 整型以二进制显示
    fmt.Println()
    fmt.Printf("this is %d", 100)       // 整形十进制显示
}
--->
this is jab
this is 6a6162
this is 3.333
this is 1100100
this is 100

  

 strings&strconv

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package main
 
import (
    "fmt"
    "strconv"
    "strings"
)
 
var (
    url = "baidu.com"
    dir = "/data/app"
    dir2 = "/data/app/"
    data = "  name=jab  "
    a = "a"
    n = 2
)
 
 
func stringsTest() {
    // 判断以字符开头
    if ! strings.HasPrefix(url,"http://") {
        url = "http://" + url
    }
    // 判断以字符结尾
    if ! strings.HasSuffix(dir, "/") {
        dir = dir + "/"
    }
    fmt.Println(url)
    fmt.Println(dir)
 
    // 脱去空白字符,脱去左边字符串,脱去右边字符串
    data = strings.TrimSpace(data)
    dir2 = strings.TrimLeft(dir2,"/")
    dir3 := strings.TrimRight(dir2,"/")
    fmt.Println(data,dir2,dir3)
 
    // 分割字符串为切片
    s := strings.Split(dir, "/")
    for i:=0;i<len(s);i++ {
        fmt.Println(s[i])
    }
 
    // 将切片组合为字符串
    s2 := strings.Join(s,"/")
    fmt.Println(s2)
}
 
func strconvTest() {
    // int转str
    // str转int
    fmt.Println(strconv.Itoa(n))
    result,err := strconv.Atoi(a)
    if err != nil {
        fmt.Println("error..msg=", err)
    } else {
        fmt.Println(result)
    }
}
 
func main() {
    stringsTest()
    strconvTest()
}

  

time

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
func atime() {
    // 获取当前时间,使用当前时间的参数格式化时间
    //Format格式化必须使用这个时间,然后自己定义格式。
    now := time.Now()
    fmt.Printf("%d%02d%02d-%02d:%02d:%02d",now.Year(),now.Month(),now.Day(),now.Hour(),now.Minute(),now.Second())
    fmt.Println()
    fmt.Println(now.Format("2006/01/02 15:04:05"))
    time.Sleep(time.Second*2)
}
 
func main() {
    // 计算函数耗时
    startclock := time.Now().UnixNano()
    atime()
    endclock := time.Now().UnixNano()
    fmt.Println("cost time:",endclock - startclock)
}

  

函数

函数变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//type 类型申明
// add_func 名称
// func(int, int) int 类型,在这里是个函数
type add_func func(int, int) int
 
func add(a, b int) int{
    return a + b
}
 
// 传递一个函数变量,要求是add_func这个类型,c是add函数变量,符合这个类型
func operator(op add_func, a int, b int) int {
    return op(a, b)
}
 
func main() {
    c := add
    fmt.Println(c)
    sum := operator(c, 100, 200)
    fmt.Println(sum)
}

  

变长变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 一个或多个int相加,返回结果
func add2(a int, arg...int) (sum int) {
    sum = a
    for i := 0; i < len(arg); i++ {
        sum = sum + arg[i]
    }
    return sum
}
 
// 一个或多个字符串拼接
func concat(s string, arg...string) (ss string) {
    ss = s
    for i := 0; i < len(arg); i++ {
        ss = ss + arg[i]
    }
    return ss
}

  

匿名函数

1
2
3
4
5
6
7
// 匿名函数,函数后面直接跟传参
func niming(a ,b int) {
    result := func(x, y int) int{
        return x + y
    }(a,b)
    fmt.Println(result)
}

  

for循环

1
2
3
4
5
6
7
8
9
10
11
12
13
package main
 
import "fmt"
 
// for循环练习
func main() {
    for i := 1; i < 10; i++ {
        for j := 1; j <= i; j++ {
            fmt.Printf("%d * %d = %d  ",i, j, i*j)
        }
        fmt.Println()
    }
}

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 输入一个数,判断是否是整数
func test1() {
    // for {}相当于while True,无限循环
    for {
        var str string
        fmt.Scanf("%s",&str)
        a,error := strconv.Atoi(str)
        if error != nil {
            fmt.Println("error!")
            return
        }
        fmt.Println(a)
    }
}

  

切片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package main
 
import "fmt"
 
// slice练习
func main() {
    s1 := make([]int, 5, 100)   // 使用make函数创建int切片,len为5,cap为100
    s2 := []string{"Jack", "Mark", "Nick"}      // 使用字面量创建string切面,len和cap都是4
    s3 := []int{}       // 空切片
 
    // 按索引给s1赋值
    for i := 0; i < len(s1); i++{
        s1[i] = i
    }
    fmt.Println(s1)
 
    // 打印s2的所有元素
    for i := 0; i < len(s2); i++{
        fmt.Println(s2[i])
    }
 
    // 往s3里追加元素
    for i :=0; i < 10; i++{
        s3 = append(s3, i)
    }
    fmt.Println(s3)
}
1
2
3
4
5
6
7
8
9
10
11
// []int空切片
// append(切片,加入的元素)
// a...表示a里面的所有元素
func slice() {
    var a []int
    var b []int
    a = append(a,1,2,3,4)
    b = append(a,a...)
    fmt.Println(a)
    fmt.Println(b)
}

  

  

 

 

posted @   jabbok  阅读(161)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· SQL Server统计信息更新会被阻塞或引起会话阻塞吗?
阅读排行:
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 本地部署 DeepSeek:小白也能轻松搞定!
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 普通人也能轻松掌握的20个DeepSeek高频提示词(2025版)
点击右上角即可分享
微信分享提示