相关疑难解决方法(0)

interface {}的含义是什么?

我是接口的新手,并试图通过github做SOAP请求

我不明白的意思

Msg interface{}
Run Code Online (Sandbox Code Playgroud)

在这段代码中:

type Envelope struct {
    Body `xml:"soap:"`
}

type Body struct {
    Msg interface{}
}
Run Code Online (Sandbox Code Playgroud)

我观察到相同的语法

fmt.Println
Run Code Online (Sandbox Code Playgroud)

但不明白所取得的成就

interface{}
Run Code Online (Sandbox Code Playgroud)

go

122
推荐指数
5
解决办法
4万
查看次数

在Go中解释类型断言

我正在阅读Go Go Programming Languagex.(T)类型断言并且不理解它们.

我知道有不同的场景:

  • T是具体类型或接口
  • 可以返回一个(断言值?)或两个(ok)值

这是我不明白的:

  • 我为什么要用它们?
  • 他们究竟回归了什么?

我也搜索了这个话题,仍然不明白.

go

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

在Go中使用接口

我想了解接口类型,并在Go(语言)中使用它的一个简单示例.

我阅读了网络文档,但我没有得到它.

interface go

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

如何在golang中实现不同包的接口?

我是golang的初学者,正在尝试接口.我想将接口保存在一个单独的包中,以便我可以使用它在各种其他包中实现它,也将它提供给其他团队(.a文件),以便他们可以实现自定义插件.请参阅下面的示例,了解我希望实现的目标.

--- Folder structure ---
gitlab.com/myproject/
                  interfaces/
                            shaper.go
                  shapes/
                        rectangle.go
                        circle.go

---- shaper.go ---
package interfaces

type Shaper interface{

    Area() int

}
Run Code Online (Sandbox Code Playgroud)

如何确保rectangle.go实现整形器接口?我明白go隐式实现接口,这是否意味着rectangle.go自动实现shaper.go即使它在不同的包中?

我尝试过如下,但是当我运行gofmt工具时,它会删除导入,因为它未被使用.

--- rectangle.go ---
package shapes

import "gitlab.com/myproject/interfaces"

type rectangle struct{

  length int
  width int
}

func (r rectangle) Area() int {
 return r.length * r.width
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

go

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

Go接口有哪些例子?

我发现了一篇关于Go 的有趣博客文章.

我试图理解接口的概念,但我发现很难从博客文章中的代码片段这样做,而且几乎不可能从语言规范中做到这一点.

任何人都可以在工作程序中指出一个简单的Go接口示例吗?

go

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

接口与结构方法

我有带接口的代码:

package main

import (
    "math"
    "fmt"
)

type Circle struct {
    x, y, r float64
}

type Rectangle struct {
    x1, y1, x2, y2 float64
}

type Figure interface {
    Area() float64
}

func (c *Circle) Area() float64 {
    return math.Pi * c.r * c.r
}

func (r *Rectangle) Area() float64 {
    return math.Abs(r.x2 - r.x1) * math.Abs(r.y2 - r.y1)
}

func main() {
    figures := make([]Figure, 0)
    figures = append(figures, &Circle{0, 0, 10})
    figures = append(figures, &Rectangle{0, 0, …
Run Code Online (Sandbox Code Playgroud)

struct interface go

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

Go和Java在接口上有什么区别?

最近有人问我一个问题,Golang 和 Java 在interface 上有什么区别?

我知道存在一些“语法糖级别”差异,我感兴趣的是地下的任何东西,比如 Golang 和 Java 是如何实现接口的?最大的区别是什么?哪一种更有效率?为什么?

任何人都可以发布有关此主题的博客链接或源代码吗?源代码更好。

谢谢。

java interface go

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

如何在Go中为不同类型实现容器?

以下代码在Go中实现了一个int列表:

package main

import "fmt"

type List struct {
    Head int
    Tail *List
}

func tail(list List) *List {
    return list.Tail
}

func main() {
    list := List{Head: 1, Tail: 
         &List{Head: 2, Tail:
         &List{Head: 3, Tail:
         nil}}}
    fmt.Println(tail(list).Head)
}
Run Code Online (Sandbox Code Playgroud)

问题是这只适用于int.如果我想要一个列表strings,我需要再次重新实现每个列表方法(例如tail)!这显然不实用,所以,这可以通过使用空接口来解决:

type List struct {
  Head interface{} // Now works for any type!
  Tail *List
}
Run Code Online (Sandbox Code Playgroud)

问题是,1.由于类型转换,这似乎要慢得多,2.它抛弃了类型安全,允许人们键入任何东西:

// This type-checks!
func main() {
    list := List{Head: 123456789 , Tail:
         &List{Head: "covfefe" , Tail: …
Run Code Online (Sandbox Code Playgroud)

generics types interface go

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

Go接口值是实现接口的整个变量吗?

新来到这里.我正在参观 Go并且遇到一个词,我很困惑它是什么.

这是第11页方法一节在这里.它说," 界面值可以被认为是价值和具体类型的元组."

我的理解是接口值是实现该接口的变量.例如:

type Animal interface {
    run()
}

type Cat struct { … }

func main() {
    kitty := Cat{ … }
}

func (c Cat) run() { … }
Run Code Online (Sandbox Code Playgroud)

kitty接口值吗?

interface go

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

如果没有强制执行Go的接口,它们是否必要?

Go语言将接口类型作为功能,类似于C风格的接口.但是,Go的接口类型似乎没有被强制执行 - 它们只是定义协议而不实际应用于类型.由于它们没有强制执行,使用接口仍然是个好主意吗?

go

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

使用方法而不是函数有什么好处吗?

我正在开发“Matrix”结构体和相关方法,目的是为了练习 Go。我做了很多方法,但我意识到所有这些方法都可以变成我习惯于C++的函数,而在C++中,如果我创建一个参数是类类型的函数,则该函数不能使用该类的私有变量(信息隐藏)但是,当我使用“Go”构建类似的代码时,函数可以访问结构体的变量。所以我不明白 Go 中的方法和函数有什么不同。使用方法而不是函数是否有任何利润,反之亦然?

第一个是我原来的“Matrix”代码(不是全部)它使用了一种方法“Tr”。它没有问题。

package main
import "fmt"

//definition of "Array"
type Array struct{
    component [][]float32
    row int
    col int
}
//constructor of Array, "Ones"; making an array setting all component as one
func Ones(m int, n int) Array{
    var a Array
    a.component = make([][]float32, m)
    a.row=m
    a.col=n
    for i:=0; i<m; i++{
        a.component[i] = make([]float32, n)
        for j:=0; j<n; j++{
            a.component[i][j]=1
        }
    }
    return a
}
//Tr function; find trace of an Array
func (a Array) Tr() float32{
    var …
Run Code Online (Sandbox Code Playgroud)

methods function go

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

标签 统计

go ×11

interface ×5

function ×1

generics ×1

java ×1

methods ×1

struct ×1

types ×1