继上篇 2018年Go语言实战笔记1
接触一门新语言,了解其语法结构,常用的包是必须的,同时也是无聊的。有过其他编程语言基础的同学,学习go的语法很简单,参照 go文档 过一遍就能对go的语法有大致的了解。通过 go包文档 查阅常用包的使用
这些知识都是相当枯燥的,只需要大概过一遍,在实际写代码时,再参照文档演练,写多了也就熟悉了。
package main import ( "fmt" "strings" ) func main() { fmt.Println(strings.TrimSpace(" 云想衣裳花想容 ")) // 云想衣裳花想容 fmt.Println(strings.Trim("云想衣裳花想容", "花想容")) // 云想衣裳 fmt.Println(strings.TrimLeft("黄山落叶松叶落山黄", "黄")) // 山落叶松叶落山黄 fmt.Println(strings.TrimRight("黄山落叶松叶落山黄", "黄")) // 黄山落叶松叶落山 s := []string{"抽刀", "断水", "水更流"} fmt.Println(strings.Join(s, "")) // 抽刀断水水更流 url := "https://github.com/" fmt.Println(strings.HasPrefix(url, "https")) // true }
strings
go是一门很自恋的语言,时间的格式化必须以"2006/01/02 15:04:05"为时间点,据说这是go的诞生时间,在这点上,与董小姐要求手机开机画面是她的头像有异曲同工之妙。
package main import ( "time" "fmt" ) func main() { now := time.Now() fmt.Println(now.Format("2006/01/02 15:04:05")) // 2018/07/26 09:29:46 fmt.Println(now.Format("2006-01-02 15:04:05")) // 2018-07-26 09:29:46 fmt.Println(now.Format("2018-01-02 15:04:05")) // 26078-07-26 09:30:31 改成其它时间点,返回的是什么鬼... }
package main import "fmt" func main() { var a = 10 var p *int // 定义一个指针变量用于存储内存地址 p = &a fmt.Println("a的值:", a) // a的值: 10 fmt.Println("a的内存地址:", &a) // a的内存地址: 0xc4200140d8 fmt.Println("p的值:", p) // p的值: 0xc4200140d8 fmt.Println("p的内存地址:", &p) // p的内存地址: 0xc42000c028 fmt.Println("p指向的值:", *p) // p指向的值: 10 *p = 20 // 修改 p 指向的值,会把a的值也修改了 fmt.Println(a) // 20 var b = 100 p = &b // 给p重新赋值 *p = 200 fmt.Println(a) // 20 不会改变a的值 fmt.Println(b) // 200 }
package main import ( "fmt" "strconv" ) func main() { var str string fmt.Scanf("%s", &str) number, err := strconv.Atoi(str) // 将string转为number if err != nil { fmt.Println("转换失败,错误信息:", err) return } fmt.Println(number) }
☁ demo [master] ⚡ go run main/main.go 10 10 ☁ demo [master] ⚡ go run main/main.go 测试 转换失败,错误信息: strconv.Atoi: parsing "测试": invalid syntax
从0至100之间取一个随机数,然后猜这个数是多少
package main import ( "math/rand" "fmt" ) func main() { var n int n = rand.Intn(100) for { var input int fmt.Scanf("%d\n", &input) flag := false switch { case input == n: fmt.Println("猜对了") flag = true case input > n: fmt.Println("大了") case input < n: fmt.Println("小了") } if flag { break } } }
☁ demo [master] ⚡ go run main/main.go 50 小了 75 小了 92 大了
函数可以被储存到变量中
package main import "fmt" func add(a, b int) int { return a + b } func main() { plus := add // 将函数赋予到变量中 sum := plus(100, 200) fmt.Println(sum) // 300 }
以下是几个简单的实例,主要是为了熟悉go的相关语法规范
思路:
fmt.Scanf
能获取终端的标准输入package main import "fmt" // 判断是否为质数 func isPrime(n int) bool { for i := 2; i < n; i++ { if n % i == 0 { return false } } return true } func main() { var ( n int m int ) fmt.Scanf("%d%d", &n, &m) // 获取终端输入的数字 for i := n; i < m; i++ { if isPrime(i) == true { fmt.Printf("%d\n", i) continue } } }
package main import "fmt" func sum(n int) int { var s = 1 for i := 1; i <= n; i++ { s = s * i } return s } func main() { var n int fmt.Scanf("%d", &n) s := sum(n) fmt.Println(s) }
代码中阶乘的结果数据类型是int,如果结果超出int的最大值,会显示意料之外的结果
☁ demo [master] ⚡ go run main/main.go 5 120 ☁ demo [master] ⚡ go run main/main.go 100 0
输出以下效果
效果图
package main import "fmt" func printString(n int) { for i := 1; i < n+1; i++ { for j := 0; j < i; j++ { fmt.Printf("A") } fmt.Println() } } func main() { printString(9) }
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句