goの関数からの戻り値が型へのポインターであることをどのようにテストできますか?

ティム・ヒューズ:

私はテストケースでハイライト表示しました。理想的にiは、それWHAT_SHOULD_I_PUT_HERE

main.go

package main

import "fmt"

type SomeType struct {
    thingThatNeedsSetup struct{}
}

func Create() *SomeType {
    return &SomeType{}
}

func main() {
    a := Create()
    fmt.Println(a.thingThatNeedsSetup)
}

main_test.go

package main

import (
    "testing"
)

func TestCreate(t *testing.T) {

    i := Create()

    if i != WHAT_SHOULD_I_PUT_HERE {
        t.Error()
    }   
}
mkopriva:

Goは型付き言語であるため、goコンパイラは、そのように定義された関数を保証します

func Create() *SomeType

は常に型の値を返し*SomeTypeます。そのため、例はかなり無意味に見えます。


一方、インターフェースを返すものとして関数を定義した場合、空かどうか、例えば

func Create() interface{}

戻り値の基礎となるタイプは、そのインターフェースを実装するものであれば何でもかまいません。その場合、基礎となるタイプのテストが意味をなす場合があります。


リフレクトパッケージを使用して、2つの値の型が等しいかどうかをテストできます具体的には、Reflect.Type型の値を返す関数Reflect.TypeOf です

ドキュメントから:

タイプ値は、==演算子などで比較できます。2つのType値は、同じタイプを表す場合は等しくなります。

例:

package main

import (
    "testing"
    "reflect"
)

func TestCreate(t *testing.T) {

    i := Create()

    if reflect.TypeOf(i) != reflect.TypeOf(&SomeType{}) {
        t.Error()
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ある関数( "extract")から別の関数( "BinToDec")への配列(私の場合は "right"と "left")の戻り値をどのように使用できますか?

分類Dev

Angular 4コンポーネントのコンテキストで関数を取得することにはどのような利点がありますか?

分類Dev

関数の戻り値へのポインタを取得するにはどうすればよいですか?

分類Dev

(コンパイル時に)戻り値の型が不明な関数へのポインタを宣言することは可能ですか

分類Dev

戻り値の型ポインターの関数で変数のアドレスを返すことはできますか?

分類Dev

関数に値で渡すことができるように、バックエンドの構造体オブジェクトへのポインターであるインターフェイスを逆参照しようとしています

分類Dev

戻り値の型が引数の入力型に依存する関数をタイプヒントするにはどうすればよいですか?

分類Dev

値がclsのインスタンスである場合、戻り値の型に注釈を付けることができますか?

分類Dev

さまざまな引数を取ることができる関数ポインターのベクトルをどのように作成しますか?

分類Dev

ポインタ関数への非ポインタである値を返すことはできますか?

分類Dev

反応性システムでその値を持ちながら、Svelteコンポーネントのインスタンス化によって変化する<input type =…属性をどのように持つことができますか?

分類Dev

構造体オブジェクトへのポインタを返すテンプレートクラスで宣言された関数の定義をどのように書くことができますか?

分類Dev

ジャスミンで値が「以上」であることをどのようにテストできますか?

分類Dev

関数への入力パラメーターから戻り値の型の列名を導出するにはどうすればよいですか?

分類Dev

関数の外側に戻ります。これはインデントではないと思います (戻り値は関数内にある必要があります! ステートメントでテストすることはできません)

分類Dev

Typescript推論の問題-エクスポートされた関数の戻り値の型に名前があるか、名前を使用しています...しかし名前を付けることができません

分類Dev

SetとArrayの間にCollectionスーパータイプはありますか?そうでない場合、関数はどのようにして集合と配列の両方で多型になることができますか(反復用)?

分類Dev

Typescriptインターフェイスの関数の戻り値の型voidを定義するにはどうすればよいですか?

分類Dev

特定のgo関数のドキュメントをどのように見ることができますか?

分類Dev

開始/終了JavaScript関数の値を、間にあるべきインデックスとどのように等しくすることができますか?

分類Dev

値が(文字列への)ポインタであることをタイプアサートするにはどうすればよいですか?

分類Dev

Goの構造体へのポインターである型をどのように初期化できますか?

分類Dev

クラスでプライベート構造を定義するとき、それを関数パラメーターまたは戻り値の型としてどのように使用しますか?

分類Dev

戻り値の型は同じでパラメーターが異なる別の関数に関数を送信することはできますか?

分類Dev

文字列を数値に解析するときに、「この値のタイプはこのコンテキストで認識されている必要があります」というエラーが表示されるのはなぜですか?

分類Dev

関数の戻り値がテンプレートパラメーターと同じであるテンプレートパラメーターとして関数を渡すにはどうすればよいですか?

分類Dev

「テンプレート関数ポインタ」の型を定義することはできますか?

分類Dev

この状況で、どのようにmysqlステートメントの計算値でデータを並べ替えることができますか?

分類Dev

初期化を伴う関数ポインタ宣言の戻り値の型として「auto」キーワードを使用することは可能ですか?

Related 関連記事

  1. 1

    ある関数( "extract")から別の関数( "BinToDec")への配列(私の場合は "right"と "left")の戻り値をどのように使用できますか?

  2. 2

    Angular 4コンポーネントのコンテキストで関数を取得することにはどのような利点がありますか?

  3. 3

    関数の戻り値へのポインタを取得するにはどうすればよいですか?

  4. 4

    (コンパイル時に)戻り値の型が不明な関数へのポインタを宣言することは可能ですか

  5. 5

    戻り値の型ポインターの関数で変数のアドレスを返すことはできますか?

  6. 6

    関数に値で渡すことができるように、バックエンドの構造体オブジェクトへのポインターであるインターフェイスを逆参照しようとしています

  7. 7

    戻り値の型が引数の入力型に依存する関数をタイプヒントするにはどうすればよいですか?

  8. 8

    値がclsのインスタンスである場合、戻り値の型に注釈を付けることができますか?

  9. 9

    さまざまな引数を取ることができる関数ポインターのベクトルをどのように作成しますか?

  10. 10

    ポインタ関数への非ポインタである値を返すことはできますか?

  11. 11

    反応性システムでその値を持ちながら、Svelteコンポーネントのインスタンス化によって変化する<input type =…属性をどのように持つことができますか?

  12. 12

    構造体オブジェクトへのポインタを返すテンプレートクラスで宣言された関数の定義をどのように書くことができますか?

  13. 13

    ジャスミンで値が「以上」であることをどのようにテストできますか?

  14. 14

    関数への入力パラメーターから戻り値の型の列名を導出するにはどうすればよいですか?

  15. 15

    関数の外側に戻ります。これはインデントではないと思います (戻り値は関数内にある必要があります! ステートメントでテストすることはできません)

  16. 16

    Typescript推論の問題-エクスポートされた関数の戻り値の型に名前があるか、名前を使用しています...しかし名前を付けることができません

  17. 17

    SetとArrayの間にCollectionスーパータイプはありますか?そうでない場合、関数はどのようにして集合と配列の両方で多型になることができますか(反復用)?

  18. 18

    Typescriptインターフェイスの関数の戻り値の型voidを定義するにはどうすればよいですか?

  19. 19

    特定のgo関数のドキュメントをどのように見ることができますか?

  20. 20

    開始/終了JavaScript関数の値を、間にあるべきインデックスとどのように等しくすることができますか?

  21. 21

    値が(文字列への)ポインタであることをタイプアサートするにはどうすればよいですか?

  22. 22

    Goの構造体へのポインターである型をどのように初期化できますか?

  23. 23

    クラスでプライベート構造を定義するとき、それを関数パラメーターまたは戻り値の型としてどのように使用しますか?

  24. 24

    戻り値の型は同じでパラメーターが異なる別の関数に関数を送信することはできますか?

  25. 25

    文字列を数値に解析するときに、「この値のタイプはこのコンテキストで認識されている必要があります」というエラーが表示されるのはなぜですか?

  26. 26

    関数の戻り値がテンプレートパラメーターと同じであるテンプレートパラメーターとして関数を渡すにはどうすればよいですか?

  27. 27

    「テンプレート関数ポインタ」の型を定義することはできますか?

  28. 28

    この状況で、どのようにmysqlステートメントの計算値でデータを並べ替えることができますか?

  29. 29

    初期化を伴う関数ポインタ宣言の戻り値の型として「auto」キーワードを使用することは可能ですか?

ホットタグ

アーカイブ