小编Tsu*_*iro的帖子

什么对 t.Cleanup 有用?

问题

我想知道t.CleanupGo1.14中引入的用例。与使用 defer 相比,t.Cleanup 有什么方便之处?

https://golang.org/pkg/testing/#T.Cleanup

  • 样本

例如,假设我们创建了一个临时目录,当我们测试它时,我们想删除我们创建的临时目录。

t.Cleanup可用于编写如下测试,但它也可用作defer os.RemoveAll(tempDir).

package mypkg

import (
    "io/ioutil"
    "os"
    "testing"
)

func TestDirwalk(t *testing.T) {
    tempDir, err := ioutil.TempDir(".", "temp")
    if err != nil {
        t.Errorf("create tempDir: %v", err)
    }
    t.Cleanup(func() { os.RemoveAll(tempDir) })

    // something...
}
Run Code Online (Sandbox Code Playgroud)

testing unit-testing go go1.14

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

在Go中,结构指针不是引用类型吗?

我不了解Go变量的行为。我要你告诉我。请参见下面的示例实现。

package main

import (
    "fmt"
)

func pointer(ip *Num) {
    fmt.Printf("pointer type [%T] : %p\n", &ip, &ip)
}

func pointerpointer(ip **Num) {
    fmt.Printf("pointerpointer type [%T] : %p\n", ip, ip)
}

func main() {
    pnum := &Num{i: 3}
    fmt.Printf("main type [%T] : %p\n", &pnum, &pnum)
    pointer(pnum)
    pointerpointer(&pnum)
}

type Num struct {
    i int
}

Run Code Online (Sandbox Code Playgroud)

https://play.golang.org/p/LxDAgopxeh0

  • 结果
main type [**main.Num] : 0x40c138
pointer type [**main.Num] : 0x40c148
pointerpointer type [**main.Num] : 0x40c138
Run Code Online (Sandbox Code Playgroud)

我将struct Num指针存储为变量[pnum]。将其传递给指针函数时可以获取的地址与主函数中可以获取的地址不同。为什么??

已经确认,通过将指针指针称为指针指针功能,可以获得与主功能相同的地址。

struct pointers go

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

标签 统计

go ×2

go1.14 ×1

pointers ×1

struct ×1

testing ×1

unit-testing ×1