小编Sot*_*liu的帖子

libtool:无法识别的选项`-static'

当我安装 LLVM 时,发生错误:

?  build make
[  0%] Linking CXX static library ../libLLVMSupport.a
libtool: unrecognized option `-static'
libtool: Try `libtool --help' for more information.
make[2]: *** [lib/libLLVMSupport.a] Error 1
make[1]: *** [lib/Support/CMakeFiles/LLVMSupport.dir/all] Error 2
make: *** [all] Error 2
?  build which libtool
/usr/local/bin/libtool
Run Code Online (Sandbox Code Playgroud)

我已经尝试解决它,但失败了。

http://flummox-engineering.blogspot.com/2014/04/libtool-unrecognized-option-static.html

llvm libtool

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

Go 错误:“嵌入类型不能是指向接口的指针”

以下代码给出编译时错误:

type IFile interface {
    Read() (n int, err error)
    Write() (n int, err error)
}

type TestFile struct {
   *IFile
}
Run Code Online (Sandbox Code Playgroud)

错误:

./test.go:18:嵌入类型不能是指向接口的指针

为什么我不能嵌入*IFile

struct pointers interface build go

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

如何理解golang多重返回值

Golang支持为多个左侧变量分配多个返回值.例如:

func test() (string, string) {
  return "1", "1"
}

a, b := test()
Run Code Online (Sandbox Code Playgroud)

要么

a, _ := test()
Run Code Online (Sandbox Code Playgroud)

并且接收变量和返回值的数量必须匹配:

b = test()   //wrong
Run Code Online (Sandbox Code Playgroud)

但是对于某些内置类型,例如[]或< - ,支持可变数量的返回值

key, exist := map[key]

key := map[key]
Run Code Online (Sandbox Code Playgroud)

我可以从这样的频道读取价值

c <- myChan

c, exist <- myChan
Run Code Online (Sandbox Code Playgroud)

我们如何解释这种不一致?这是核心运行/语言保留的功能吗?

return-value go

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

对切​​片上的append()行为感到困惑

func main() {
    slice := make([]int, 10, 10)
    slice[0] = 0
    slice[1] = 1

    slice1 := slice
    slice1[0] = 10000
    fmt.Println(slice)

    slice1 = append(slice1, 100)
    slice1[0] = 20000

    fmt.Println(slice)
}
Run Code Online (Sandbox Code Playgroud)

结果:

[10000 1 0 0 0 0 0 0 0 0]

[10000 1 0 0 0 0 0 0 0 0]

在我的理解中,slice是一个指针,slice1slice指向同一个数组,第一个输出也证明了这一点.但是slice,在追加行动改变后,为什么价值保持不变slice1

append go slice

0
推荐指数
1
解决办法
108
查看次数

如何解释golang切片范围的现象

type student struct {
    Name string
    Age  int
}

func main() {
    m := make(map[string]*student)
    s := []student{
        {Name: "Allen", Age: 24},
        {Name: "Tom", Age: 23},
    }

    for _, stu := range s {
        m[stu.Name] = &stu
    }
    fmt.Println(m)
    for key, value := range m {
        fmt.Println(key, value)
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

地图[艾伦:0xc42006a0c0 汤姆:0xc42006a0c0]

艾伦和{汤姆 23}

汤姆 &{汤姆 23}

如何解释Slice的现象,在我看来,stu应该是s的每个成员的地址,但是从结果来看,s的地址是相同的。

range go slice

-3
推荐指数
1
解决办法
208
查看次数

标签 统计

go ×4

slice ×2

append ×1

build ×1

interface ×1

libtool ×1

llvm ×1

pointers ×1

range ×1

return-value ×1

struct ×1