【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代理相关的代码我还没怎么看懂,先去补补这块的基础知识,之后再来回顾。
相关文章
|
2月前
|
监控 安全 Java
Go语言学习笔记(一)
Go语言学习笔记(一)
112 1
|
2月前
|
存储 分布式计算 算法
GO学习笔记之表达式
GO学习笔记之表达式
37 1
|
2月前
|
存储 编译器 Go
GO语言学习笔记
GO语言学习笔记
27 1
|
9月前
|
Go iOS开发 MacOS
Go学习笔记-代码调试工具 dlv
Go学习笔记-代码调试工具 dlv
378 1
Go学习笔记-代码调试工具 dlv
|
9月前
|
编译器 Go
Go学习笔记-defer、panic、recover分析
Go学习笔记-defer、panic、recover分析
55 1
Go学习笔记-defer、panic、recover分析
|
9月前
|
Go 自然语言处理 编译器
Go 学习笔记-Go 词法解析
Go 学习笔记-Go 词法解析
59 0
Go 学习笔记-Go 词法解析
|
9月前
|
存储 安全 Linux
Go语言学习笔记-进程和线程
Go语言学习笔记-进程和线程
44 0
Go语言学习笔记-进程和线程
|
9月前
|
自然语言处理 前端开发 Java
Go 学习笔记-Go 编译器简介
Go 学习笔记-Go 编译器简介
48 0
|
9月前
|
自然语言处理 算法 Java
Go学习笔记-Go编译器简介
Go学习笔记-Go编译器简介
63 0
|
9月前
|
存储 Go
Go学习笔记-Go 浮点数设计原理
Go学习笔记-Go 浮点数设计原理
69 0