小编Bor*_*ort的帖子

切片类型的初始化方法无法初始化

我尝试为我自己的类型实现一个初始化方法.但是在调用方法之后,变量在main()中保持不变.我可能还没有完全理解切片是如何工作的,这是我的示例代码

package main
import "fmt"

type test [][]float64

func (p *test) init(m, n int){
    tmp := *p
    tmp = make(test, m)
    for i := 0; i < m; i++ {
        tmp[i] = make([]float64, n)
    }
}

func main(){
    var t test
    t.init(10,2)
    fmt.Println(t)
}
Run Code Online (Sandbox Code Playgroud)

我的印象是接收器类型*的内容可以改变,但这似乎不是切片的情况.那么如何将我的初始化函数正确绑定到我的类型呢?我很确定在我身边存在误解......我尝试了几件事

var t *test = new(test)
Run Code Online (Sandbox Code Playgroud)

要么

func (p *test) init(m, n int){
    tmp := *p
    tmp = append(tmp, make(test, m)...)
    for i := 0; i < m; i++ {
        tmp[i] = append(tmp[i], make([]float64, n)...)
    } …
Run Code Online (Sandbox Code Playgroud)

go

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

gmsh中如何保证节点点?

我正在尝试构建一个非常简单的网格。我有一个盒子:

box_size = 50;
lb = 10.;
Point(1) = {-box_size/2, -box_size/2, -box_size/2, lb};
Point(2) = {box_size/2, -box_size/2, -box_size/2, lb};
Point(3) = {box_size/2, box_size/2, -box_size/2, lb};
Point(4) = {-box_size/2, box_size/2, -box_size/2, lb};
Line(1) = {1, 2};
Line(2) = {2, 3};
Line(3) = {3, 4};
Line(4) = {4, 1};
Line Loop(5) = {1, 2, 3, 4};
Plane Surface(6) = {5};
Extrude {0, 0, box_size} {
  Surface{6};
}
Run Code Online (Sandbox Code Playgroud)

这工作得很好,gmsh 很乐意对其进行 (3D) 网格划分。问题是我要确保盒子内的某些点是节点。所以我的问题是,我如何确保这些点,比如这些

lc = 10;
Point(5) = {7.150548, 1.000000,  -6.990684, lc};
Point(6) = …
Run Code Online (Sandbox Code Playgroud)

numeric mesh numerical-methods finite-element-analysis gmsh

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