【Go学习笔记】通过go-by-example学Go(二)

简介: string string的常用函数,其中的Replace()表达给我印象比较深刻,n为-1表示全部替换 strconv Atoi()在这里指的不是ASCII对应字符转int,而是字符串转int
本文首发于稀土掘金。该平台的作者 逐光而行 也是本人。

string

string的常用函数,其中的Replace()表达给我印象比较深刻,n为-1表示全部替换

package main

import (
   "fmt"
   "strings"
)

func main() {
   a := "hello"
   fmt.Println(strings.Contains(a, "ll"))                // true
   fmt.Println(strings.Count(a, "l"))                    // 2
   fmt.Println(strings.HasPrefix(a, "he"))               // true
   fmt.Println(strings.HasSuffix(a, "llo"))              // true
   fmt.Println(strings.Index(a, "ll"))                   // 2
   fmt.Println(strings.Join([]string{"he", "llo"}, "-")) // he-llo
   fmt.Println(strings.Repeat(a, 2))                     // hellohello
   //第三个参数表示替换个数,<0时表示全部替换
   fmt.Println(strings.Replace(a, "e", "E", -1)) // hEllo
   fmt.Println(strings.Split("a-b-c", "-"))      // [a b c]
   fmt.Println(strings.ToLower(a))               // hello
   fmt.Println(strings.ToUpper(a))               // HELLO
   fmt.Println(len(a))                           // 5
   b := "你好"
   fmt.Println(len(b)) // 6
}

strconv

  • Atoi()在这里指的不是ASCII对应字符转int,而是字符串转int(参见官方文档)
  • ParseInt()之类的第二个参数base,如果为0,就是视情况而定。比如原来的字符串是0b,转换为二进制;0或0o八进制,0x16进制。

guess-game

看了几遍guess-game,并且凭着记忆仿写了一段代码,在这个过程中对一些注意事项的记忆更深了。

package main

import (
   "bufio"
   "fmt"
   "math/rand"
   "os"
   "strconv"
   "strings"
   "time"
)

func main() {
   maxNUm := 100
   rand.Seed(time.Now().UnixNano())
   secretNum := rand.Intn(maxNUm)

   fmt.Println("please input your guess:")

   reader := bufio.NewReader(os.Stdin)

   for {
      input, err := reader.ReadString('\n')
      //有错误
      if err != nil {
         fmt.Println("error,please try again:")
         continue
      }
      input = strings.Trim(input, "\r\n")

      guessNum, err := strconv.Atoi(input)

      if err != nil {
         fmt.Println("not an Integer,,please try again:")
         continue
      }
      fmt.Println("your guess is", guessNum)

      if secretNum == guessNum {
         fmt.Println("Congratulations!")
         break
      } else if secretNum > guessNum {
         fmt.Println("The actual value is bigger!")
      } else {
         fmt.Println("The actual value is smaller!")
      }
   }
}
  • go没有while语句,想用while的格式可直接用for{}代替。
  • go中的if、else if else要紧密连接在{}周围,同时不要在if后面加括号
  • 语法体验上感觉go像C++和Python的结合体。一些对底层的操控和把握的严谨认真程度像C++,一些力求简洁、易读的表达上像Python。

proxy代理相关的代码我还没怎么看懂,先去补补这块的基础知识,之后再来回顾。
相关文章
|
6月前
|
监控 安全 Java
Go语言学习笔记(一)
Go语言学习笔记(一)
124 1
Go语言的条件控制语句及循环语句的学习笔记
本文是Go语言的条件控制语句和循环语句的学习笔记,涵盖了if语句、if-else语句、if嵌套语句、switch语句、select语句以及for循环和相关循环控制语句的使用方法。
Go语言的条件控制语句及循环语句的学习笔记
|
2月前
|
存储 Go
Go: struct 结构体类型和指针【学习笔记记录】
本文是Go语言中struct结构体类型和指针的学习笔记,包括结构体的定义、成员访问、使用匿名字段,以及指针变量的声明使用、指针数组定义使用和函数传参修改值的方法。
|
2月前
|
人工智能 算法 搜索推荐
Go学习笔记-代码调
近年来,人工智能技术飞速发展,Cody作为由Sourcegraph开发的一款AI驱动编码助手,应运而生。它不仅提供代码预测与补全,还能深度理解代码上下文,为开发者提供准确建议,提升编码效率和质量。Cody能识别潜在错误并提出修复建议,缩短调试时间,同时进行智能代码审查,帮助优化代码结构和风格。未来,随着AI技术进步,Cody将不断学习优化,成为开发者不可或缺的伙伴,推动编程领域的创新与发展。
33 0
|
6月前
|
存储 分布式计算 算法
GO学习笔记之表达式
GO学习笔记之表达式
51 1
|
6月前
|
存储 编译器 Go
GO语言学习笔记
GO语言学习笔记
44 1
|
Go 自然语言处理 编译器
Go 学习笔记-Go 词法解析
Go 学习笔记-Go 词法解析
80 0
Go 学习笔记-Go 词法解析
|
自然语言处理 前端开发 Java
Go 学习笔记-Go 编译器简介
Go 学习笔记-Go 编译器简介
70 0
|
自然语言处理 算法 Java
Go学习笔记-Go编译器简介
Go学习笔记-Go编译器简介
86 0
|
存储 Go
Go学习笔记-Go 浮点数设计原理
Go学习笔记-Go 浮点数设计原理
114 0