小编Kir*_*ril的帖子

在Golang中初始化嵌套的结构定义

你如何初始化以下结构?

type Sender struct {
    BankCode string
    Name     string
    Contact  struct {
        Name    string
        Phone   string
    }
}
Run Code Online (Sandbox Code Playgroud)

我试过了:

s := &Sender{
        BankCode: "BC",
        Name:     "NAME",
        Contact {
            Name: "NAME",
            Phone: "PHONE",
        },
    }
Run Code Online (Sandbox Code Playgroud)

没工作:

mixture of field:value and value initializers
undefined: Contact
Run Code Online (Sandbox Code Playgroud)

我试过了:

s := &Sender{
        BankCode: "BC",
        Name:     "NAME",
        Contact: Contact {
            Name: "NAME",
            Phone: "PHONE",
        },
    }
Run Code Online (Sandbox Code Playgroud)

没工作:

undefined: Contact
Run Code Online (Sandbox Code Playgroud)

struct initialization go

41
推荐指数
2
解决办法
4万
查看次数

Golang将JSON数组解析为数据结构

我试图解析包含JSON数据的文件:

[
  {"a" : "1"},
  {"b" : "2"},
  {"c" : "3"}
]
Run Code Online (Sandbox Code Playgroud)

由于这是一个带有动态密钥的JSON数组,我想我可以使用:

type data map[string]string
Run Code Online (Sandbox Code Playgroud)

但是,我无法使用以下方法解析文件map:

c, _ := ioutil.ReadFile("c")
dec := json.NewDecoder(bytes.NewReader(c))
var d data
dec.Decode(&d)


json: cannot unmarshal array into Go value of type main.data
Run Code Online (Sandbox Code Playgroud)

解析包含JSON数据的文件的最简单方法是将数组(只有字符串类型的字符串)转换为Go结构?

编辑:为了进一步详细说明接受的答案 - 我的JSON确实是一组地图.为了使我的代码工作,该文件应包含:

{
  "a":"1",
  "b":"2",
  "c":"3"
}
Run Code Online (Sandbox Code Playgroud)

然后它可以读成一个 map[string]string

parsing json go

28
推荐指数
2
解决办法
4万
查看次数

正则表达式删除除字符和数字之外的所有内容

我想删除除字符串中的字符az,AZ和0-9之外的所有内容,因此我需要为Java创建一个正则表达式 string.replaceAll(regex, "");

旧字符串看起来像这样:

MAX EUK_1334-PP/B+
Run Code Online (Sandbox Code Playgroud)

新字符串应如下所示:

MAXEUK1334PPB
Run Code Online (Sandbox Code Playgroud)

java regex

27
推荐指数
2
解决办法
5万
查看次数

Golang方法具有相同的名称和arity,但类型不同

以下代码工作正常.两种方法在两个不同的结构上运行并打印结构的一个字段:

type A struct {
  Name string
}

type B struct {
  Name string
}

func (a *A) Print() {
  fmt.Println(a.Name)
}

func (b *B) Print() {
  fmt.Println(b.Name)
}

func main() {

  a := &A{"A"}
  b := &B{"B"}

  a.Print()
  b.Print()
}
Run Code Online (Sandbox Code Playgroud)

在控制台中显示所需的输出:

A
B
Run Code Online (Sandbox Code Playgroud)

现在,如果我按以下方式更改方法签名,则会出现编译错误.我只是将方法的接收者移动到方法的参数:

func Print(a *A) {
  fmt.Println(a.Name)
}

func Print(b *B) {
  fmt.Println(b.Name)
}

func main() {

  a := &A{"A"}
  b := &B{"B"}

  Print(a)
  Print(b)
}
Run Code Online (Sandbox Code Playgroud)

我甚至无法编译程序:

./test.go:22: Print redeclared in this block
    previous declaration at …
Run Code Online (Sandbox Code Playgroud)

methods struct go

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

NFC手机可以作为RFID标签,可以在高于4英寸的距离读取吗?

更具体地说,我正在尝试实施一个Android应用程序,它强制手机作为RFID标签运行.该标签由放置在门周围的扫描仪(因此> 4英寸约束)读取,以识别该人及其下落.

手机将充当智能标签,从而提供更多用例.

谢谢.

android rfid nfc

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

比较Golang中的日期部分ot time.Time

假设以下两个日期.日期是一样的,但时间不同.

t1, _ := time.Parse("2006-01-02 15:04:05", "2016-01-01 12:12:12.0")
t2, _ := time.Parse("2006-01-02 15:04:05", "2016-01-01 18:19:20.0")
Run Code Online (Sandbox Code Playgroud)

我会用它来比较它们Format(),但我不确定这是否是最好的方式,特别是当不同的时区在起作用时.

if t1.Format("2006-01-02") == t2.Format("2006-01-02") {
    // dates are equal, don't care about time.
}
Run Code Online (Sandbox Code Playgroud)

这是一个好方法,还是我错过了什么?

comparison date go

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

ListView中的Android Activity Transition

我正在尝试在Android中完成以下活动转换:

在此输入图像描述

1中我们看到一个通常的ListView.现在(2),当我将手指放在ListView元素上并向左滑动手指时,所有其他ListView元素都会移开,除了手指放在其上的那个.如果转换完成,则"选定的"ListView元素将在屏幕上展开并显示一些内容.

问题:库存API函数是否可以实现这种转换?

java animation android listview transition

11
推荐指数
2
解决办法
4981
查看次数

Golang ListenAndServeTLS在浏览器中不使用https时返回数据

以下是我的后端:

package main

import (
    "fmt"
    "net/http"
)

const (
    PORT       = ":8443"
    PRIV_KEY   = "./private_key"
    PUBLIC_KEY = "./public_key"
)

func rootHander(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "Nobody should read this.")
}

func main() {
    http.HandleFunc("/", rootHander)
    err := http.ListenAndServeTLS(PORT, PUBLIC_KEY, PRIV_KEY, nil)
    if err != nil {
        fmt.Printf("main(): %s\n", err)
    }
}
Run Code Online (Sandbox Code Playgroud)

使用以下两行生成密钥:

openssl genrsa -out private_key 2048
openssl req -new -x509 -key private_key -out public_key -days 365
Run Code Online (Sandbox Code Playgroud)

当我启动tls服务器,并使用浏览器访问该站点(https://example.com:8443)时,忽略浏览器警告,我得到了预期的结果:

Nobody should read this. …
Run Code Online (Sandbox Code Playgroud)

ssl https http go

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

使用git获取aapt源代码

如何从此URL https://android.googlesource.com/使用git下载Android Asset Packaging Tool(aapt)源代码?

谢谢

android aapt

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

Heredoc 中的 Concat 变量

我有以下 KornShell (ksh) 脚本:

VAR='/this/is/a/path/'
DAT='01_01_2014'

cat << EOF
... what should I do here to concat variables with strings? ...
$VARfoldername$DAT
EOF
Run Code Online (Sandbox Code Playgroud)

然而,这只给了我(因为变量 $VARfoldername 被评估,这显然不存在):

01_01_2014
Run Code Online (Sandbox Code Playgroud)

我需要将 $VAR 与另一个字符串连接,然后与 $DAT 连接,这样运行脚本会导致:

/this/is/a/path/foldername01_01_2014
Run Code Online (Sandbox Code Playgroud)

string variables shell ksh concatenation

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