相关疑难解决方法(0)

如何在Go中有效地连接字符串?

在Go中,a string是原始类型,这意味着它是只读的,并且对它的每次操作都将创建一个新字符串.

因此,如果我想在不知道结果字符串长度的情况下多次连接字符串,那么最好的方法是什么?

天真的方式是:

s := ""
for i := 0; i < 1000; i++ {
    s += getShortStringFromSomewhere()
}
return s
Run Code Online (Sandbox Code Playgroud)

但这似乎不是很有效.

string string-concatenation go

683
推荐指数
11
解决办法
43万
查看次数

如何将uint32转换为字符串?

我需要将uint32转换为字符串.我怎样才能做到这一点 .strconv.Itoa似乎不起作用.长存储:我需要将通过imap包接收的UID转换为字符串,以便稍后将其设置为序列.作为旁注,我想知道为什么Go中的这种转换很困难.演员string(t)本来可以这么容易

go

23
推荐指数
3
解决办法
3万
查看次数

如何将uint8转换为字符串

http://play.golang.org/p/BoZkHC8_uA

我想将uint8转换为字符串,但无法弄清楚如何.

  package main

  import "fmt"
  import "strconv"

  func main() {

    str := "Hello"
    fmt.Println(str[1])  // 101

    fmt.Println(strconv.Itoa(str[1]))
  }
Run Code Online (Sandbox Code Playgroud)

这给了我 prog.go:11: cannot use str[1] (type uint8) as type int in function argument [process exited with non-zero status]

任何的想法?

go

11
推荐指数
3
解决办法
3万
查看次数

如何在golang中将字符串转换为整数

我想在golang中将字符串转换为整数.但我不知道字符串的格式.例如,"10"- > 10,"65.0"- > 65,"xx"- > 0,"11xx" - > 11,"xx11" - > 0

我做了一些搜索并找到了strconv.ParseInt().但它无法处理"65.0".所以我必须检查字符串的格式.

有没有更好的办法?

casting type-conversion go

9
推荐指数
3
解决办法
2万
查看次数

Go是否支持运算符类型变量?

这可能不是一个很好的问题,因为我不知道任何支持这个功能的编译语言,但是由于Go总是令我惊讶,我还是会问它:

对于我自己的练习,我正在Go中编写一个小计算器程序.我想知道是否有一种方法可以声明并分配一个类型为"运算符"的变量,这样我就可以编写:

var o Operator

o = +

var o1 Operator

o1 = /
Run Code Online (Sandbox Code Playgroud)

并写这样的功能

func DoOperation(a,b int,o Operator) int{

    return a o b

}
Run Code Online (Sandbox Code Playgroud)

(不,我不是在询问运营商是否超载.)

另外,我不知道任何支持这种事情的编译语言(我不是这方面的专家).我确实查看了运算符下的文档并没有发现任何内容.可以再次让我惊讶吗?

编辑: 接受的答案表明Haskell支持这一点,

variables operators variable-assignment go

8
推荐指数
2
解决办法
187
查看次数

Go中的惯用语类型转换

我正在玩Go,并想知道在Go中执行惯用类型转换的最佳方法是什么.基本上我的问题之间的自动类型转换中规定uint8,uint64float64.根据我对其他语言的经验,a uint8与a 的乘法uint64将产生一个uint64值,但在go中则不然.

这是我构建的一个示例,我问这是否是编写此代码的惯用方法,或者我是否缺少重要的语言结构.

package main

import ("math";"fmt")

const(Width=64)

func main() {

    var index uint32
    var bits uint8

    index = 100
    bits = 3

    var c uint64
    // This is the line of interest vvvv
    c = uint64(math.Ceil(float64(index * uint32(bits))/float64(Width)))
    fmt.Println("Test: %v\n", c)
}
Run Code Online (Sandbox Code Playgroud)

从我的观点来看,由于所有显式类型转换,上限值的计算似乎不必要复杂.

谢谢!

go

7
推荐指数
1
解决办法
2183
查看次数

如何使用 Golang 在文件中写入整数?

  1. 我生成从 0 到 10 的数字
  2. 我创建一个文件
  3. 我尝试通过将整数转换为字符串来写入文件

但是当我打开 h.txt 文件时,什么也没写

如何解决此问题并将数字写入 h.txt 文件?

package main

import "os"

func main() {
    for i := 0; i < 10; i++ { // Generating...

        f, _ := os.Create("h.txt") // creating...

        f.WriteString(string(i)) // writing...

        defer f.Close()
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

go

2
推荐指数
1
解决办法
5437
查看次数

通过转换和使用连接运算符将整数附加到字符串

我正在尝试将一个整数与现有字符串连接起来,casting并使用+. 但它不起作用。

package main

import (
    "fmt"
)

func main() {
    a := 4 
    b := "The value of a is "

    fmt.Println(b + string(a))
}
Run Code Online (Sandbox Code Playgroud)

这会在go 操场上打印一个垃圾字符,而在 Unix 终端上没有任何内容。这可能是什么原因?这种方法有什么问题?

string integer concatenation go

2
推荐指数
2
解决办法
7087
查看次数

想要串入int吗?

我真的以为这很简单:

string(myInt)
Run Code Online (Sandbox Code Playgroud)

似乎没有。

我正在编写一个函数,该函数需要一个int切片,并将每个int附加到字符串中,并在每个int之间添加分隔符。这是我的代码。

func(xis *Int16Slice) ConvertToStringWithSeparator(separator string) string{
    var buffer bytes.Buffer
    for i, value := range *xis{
        buffer.WriteString(string(value))
        if i != len(*xis) -1 {
            buffer.WriteString(separator)
        }
    }
    return buffer.String()
}
Run Code Online (Sandbox Code Playgroud)

请阅读下面的句子。这不是如何在Go中将int值转换为字符串的重复项-因为:我知道诸如strconv.Itoa函数之类的东西,但似乎只能在“常规” int上使用。它不支持int16

go

1
推荐指数
2
解决办法
1735
查看次数