囲碁言語基本囲碁インターフェイス使用例詳細
2022-01-06 08:09:34
概要
Goのインターフェースはメソッドシグネチャの集合体です。インターフェイスは宣言されるだけで、実装はされず、変数も含まれません。
構文
インターフェイスの定義
type [interface name] interface {
Method name 1 (parameter list) Return value list
method name 2 (list of parameters) list of returned values
...
}
例
type Isay interface{
sayHi()
}
インターフェースの実装
使用例
// Define the implementation class of the interface
type Chinese struct{}
//Implement the interface
func (_ *Chinese) sayHi() {
fmt.Println("Chinese sayHi")
}
//Chinese
type Chinese struct{}
//Americans
type Americans struct{}
func (this *Chinese) sayHi() {
fmt.Println("Chinese sayHi")
}
func (this Americans) sayHi() {
fmt.Println("Americans say hi")
}
// call
&Chinese{}.sayHi()
Americans{}.sayHi()
空のインターフェース
Go 言語の他のすべてのデータ型は、null インターフェースを実装しています。
interface{}
var v1 interface{} = 1
var v2 interface{} = "abc"
var v3 interface{} = struct{ X int }{1}
関数が任意のデータ型を受け取ることを意図している場合、その参照先をinterface{}として宣言することができます。最も典型的な例は,標準ライブラリfmtパッケージに含まれるPrint関数とFprint関数のファミリーです.
func Fprint(w io.Writer, a . . interface{}) (n int, err error)
func Fprintf(w io.Writer, format string, a . . interface{})
func Fprintln(w io.Writer, a . . interface{})
func Print(a . . interface{}) (n int, err error)
func Printf(format string, a . .interface{})
func Println(a ... .interface{}) (n int, err error)
インターフェースの組合せ
1つのインタフェースが1つ以上のインタフェースを含む
//speaking
type Isay interface{
sayHi()
}
//work
type Iwork interface{
work()
}
//define an interface that combines the above two interfaces
type IPersion interface{
Isay
Iwork
}
type Chinese struct{}
func (_ Chinese) sayHi() {
fmt.Println("Chinese speaks Chinese")
}
func (_ Chinese) work() {
fmt.Println("Chinese people working in the field")
}
// The above interface is equivalent to.
type IPersion2 interface {
sayHi()
work()
}
概要
インターフェイスの型はデフォルトではポインターで、空のインターフェイスを使用すると、任意の値を保持できます 空のインターフェイスでは動的な値を比較できません インターフェイスを定義するには、これらのメソッドをすべて実装して、コンパイルして使用する必要があります
例
package main
import "fmt"
//Chinese
type Isay interface {
sayHi()
}
//work
type Iwork interface {
work()
}
//Chinese
type Chinese struct{}
//Americans
type Americans struct{}
func (this *Chinese) sayHi() {
fmt.Println("Chinese sayHi")
}
func (this Americans) sayHi() {
fmt.Println("Americans say hi")
}
type IPersion interface {
Isay
Iwork
}
func (_ Chinese) work() {
fmt.Println("Chinese working in the field")
}
func main() {
var chinese Isay = &Chinese{}
chinese.sayHi()
Americans{}.sayHi()
//Interface combination
var ipersion IPersion = &Chinese{}
ipersion.sayHi()
ipersion.work()
}
上記は、Go言語基本囲碁インターフェイスの使用例の詳細です、Go言語基本についての詳細情報は、スクリプトハウスの他の関連記事に注目してください
関連
-
Go言語の基本型と定数の使用例詳細
-
Go言語 netパッケージ RPCリモートコール 3つの方法 httpとjson-rpcとtcp
-
golang 開発 go パッケージ 依存性管理 godep 使用法 チュートリアル
-
Go言語プログラミング学習golang設定golint
-
Go言語 初心者のための7つのチュートリアル VI ネットワーク・プログラミング
-
囲碁相互排他ロックと読み書き相互排他ロックの実装
-
同時進行のプログラミングを行う sync.Once
-
Go言語 構造体とメソッドの基本構文
-
go言語 yaml からマップへの変換、マップトラバーサルの実装
-
Golang開発における共有変数問題の解決方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン