golang 基础(18)字符串

square-gopher.png

字符串

  • immutability 字符串是不可变类型
  • strigs 标准库提供字符串基本操作
  • strconv 字符串与其他类型的转换
func main()  {
    var c byte = 'H'
    fmt.Println(c)
    mj := string(45)
    fmt.Println(mj)
}

我们尝试输出c byte = 'H'``和string(45)``

72
-

结果可能预期有些差别,如果我们将```mj := string(72)``
我们就会得到

72
H

在 go 语言会将 sybmol(符号)看作数字,而将string是作为sybmole 的数组

"hello world" 在 go 眼里是数组[72 101 100 108 111...],字符和数字之间的关系是 ASCII 定义的。

x := os.Args[1]
y := os.Args[2]

fmt.Println(x + y)

os.Args 会接受我们在运行 main.go 是命令行附加的参数

go run main.go 4 3

结果运行为 43 这是因为

x = "4"

所以输出结果

43

那么大家可能都会想到类型转换,这样进行转换类型是行不通的

x := int(os.Args[1])
y := int(os.Args[2])
import(
    "fmt"
    "os"
    "strconv"
)
  • go 语言中提供了 strconv 用于类型转换
mj := strconv.Itoa(45)
fmt.Println(mj)

可以对刚才程序进行修改为来尝试运行一下

x := strconv.Atoi(os.Args[1])
y := strconv.Atoi(os.Args[2])

fmt.Println(x + y)
.\main.go:15:19: multiple-value strconv.Atoi() in single-value context

这个很好理解也就是strconv.Atoi会返回两个返回值,我们这里只处理一个,需要对两个返回值都进行处理。

x,err1 := strconv.Atoi(os.Args[1])
y,err2 := strconv.Atoi(os.Args[2])

if err1 != nil{
    fmt.Println("Error converting first command line parameter!")
    os.Exit(1)
}

if err2 != nil{
    fmt.Println("Error converting second command line parameter!")
    os.Exit(1)
}

strings 标准库为我们提供许多实用的方法

fmt.Println(strings.ToTitle("hello world"))
HELLO WORLD
fmt.Println(strings.Title("hello world"))
Hello World
fmt.Println(strings.Replace("Hello <NAME>","<NAME>","zidea",1))

Replace 方法很简单

  • 源字符串
  • 要替换内容
  • 替换的内容
  • 替换次数
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 以前单纯的认为思维导图仅应用在读书层面,其实思维导图具有全方位,多思维的导向功能,将左脑的逻辑思维,右脑的创意思维...
    丹尼可爱熊阅读 341评论 0 0
  • 在冬天里读一本描写冬天的书,是一件很应景的事,也是一件很美好的事。这段时间,我正是在李娟的《冬牧场》里度过的。灵魂...
    雨如花飞阅读 1,791评论 16 41
  • 在这个社会背景下,大多数男孩被要求有车有房,娶媳妇还得送礼金。这对于一般家庭而言,男孩的压力除了物质方面,更多的是...
    塘小柒阅读 348评论 0 0
  • 去年被朋友喊去花卉市场,定要买一盆君子兰,原因是见同事家里的君子兰文雅俊秀,花如兰,有君子风姿,便买了一盆回去。 ...
    简秋习文阅读 2,272评论 0 7