在Go中,a string是原始类型,这意味着它是只读的,并且对它的每次操作都将创建一个新字符串.
因此,如果我想在不知道结果字符串长度的情况下多次连接字符串,那么最好的方法是什么?
天真的方式是:
s := ""
for i := 0; i < 1000; i++ {
s += getShortStringFromSomewhere()
}
return s
Run Code Online (Sandbox Code Playgroud)
但这似乎不是很有效.
我知道我可以迭代一张地图m,
for k, v := range m { ... }
Run Code Online (Sandbox Code Playgroud)
并寻找一个键,但有一种更有效的方法来测试一个键在地图中的存在吗?
我在语言规范中找不到答案.
Go是否有类似于python的多行字符串:
"""line 1
line 2
line 3"""
Run Code Online (Sandbox Code Playgroud)
如果没有,编写跨越多行的字符串的首选方法是什么?
我需要阅读[100]byte以传输一堆string数据.
因为不是所有的strings都是100个字符长,所以剩下的部分byte array用0s 填充.
如果我[100]byte转向string:string(byteArray[:]),拖尾0s显示为^@^@s.
在C string将在终止0,所以我不知道什么的巧妙的最佳方式转移byte array到string在Golang.
我试图代表一个简化的染色体,它由N个碱基组成,每个碱基只能是一个{A, C, T, G}.
我想用枚举来形式化约束,但我想知道在Go中模仿枚举的最惯用方法是什么.
i := 123
s := string(i)
Run Code Online (Sandbox Code Playgroud)
s是'E',但我想要的是"123"
请告诉我如何获得"123".
在Java中,我可以这样做:
String s = "ab" + "c" // s is "abc"
Run Code Online (Sandbox Code Playgroud)
我怎么能concat在Go中使用两个字符串?
我正在尝试将切片[1, 2]和切片组合在一起[3, 4].我怎么能在Go中这样做?
我试过了:
append([]int{1,2}, []int{3,4})
Run Code Online (Sandbox Code Playgroud)
但得到了:
cannot use []int literal (type []int) as type int in append
Run Code Online (Sandbox Code Playgroud)
但是,文档似乎表明这是可能的,我错过了什么?
slice = append(slice, anotherSlice...)
Run Code Online (Sandbox Code Playgroud) Go的标准库没有专门用于检查文件是否存在的函数(如Python os.path.exists).这样做的惯用方法是什么?
go ×10
string ×3
slice ×2
append ×1
converters ×1
dictionary ×1
enums ×1
file ×1
foreach ×1
genetics ×1
go-map ×1
int ×1
multiline ×1
overloading ×1