V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  kiwi95  ›  全部回复第 3 页 / 共 42 页
回复总数  833
1  2  3  4  5  6  7  8  9  10 ... 42  
@hoythan 我们家的 mac 和 win 都是随时插电不娇惯,淘汰了那么多电脑没有一台是电池报废不能用的
Mac 牛逼! Apple 牛逼!还好我一直插电用,从来不关心电池是否从 100%掉到了 90%
wsl2+vscode 开发 golang 比 Mac 还舒服
2023-11-20 07:30:13 +08:00
回复了 Nazz 创建的主题 Windows Windows10 已经成为了最好的 Linux 发行版
@derek80 最新的 23H2 可以的,wsl 也要升级一下,不过我当时升级完后 ipv4 client port range 变得很小导致如果短时间有大量 tcp 连接就会报错,就又改回 Nat 模式了
2023-11-19 18:15:56 +08:00
回复了 Nazz 创建的主题 Windows Windows10 已经成为了最好的 Linux 发行版
@Nazz 你看 wsl 最近的 issue ,就有一个更新 win10 后 wsl 挂了的
2023-11-19 14:32:34 +08:00
回复了 Nazz 创建的主题 Windows Windows10 已经成为了最好的 Linux 发行版
还有可能 os 更新就导致 wsl 挂了,wsl 自己更新也可能导致启动失败,遇到了也很糟心。wsl 是个好东西,但离最好很差得远。
2023-11-19 14:30:54 +08:00
回复了 Nazz 创建的主题 Windows Windows10 已经成为了最好的 Linux 发行版
可以正常编译运行和最好还差很远吧,虽然我也日常用 wsl2 ,但是稳定性和便利性还是有问题的,wslg 也有不少奇怪的问题,反正遇到了就挺麻烦,就比如 wsl2 最近新增的 mirrored network 特性,看起来很好简单实用也很棒,但开发网络服务就会遇到奇怪的问题
2023-11-04 07:44:24 +08:00
回复了 freepoint 创建的主题 阅读 《增广贤文》常读常新
就像“命里有时终须有命里无时莫强求”这局。什么叫命里有,什么叫命里无,抛头颅洒热血是强求吗,不强求岂不是大清能活到现在。
2023-11-04 07:40:54 +08:00
回复了 freepoint 创建的主题 阅读 《增广贤文》常读常新
都是废话,传统人情世故那套东西看多了免不得让人恶心。
凭直觉是骗子,鼻炎老大难问题哪有这么好治的。
2023-09-27 06:49:30 +08:00
回复了 lxh89910329 创建的主题 生活 近几年家里的矛盾愈演愈烈,我不知道该如何面对
远离可能是唯一的解,你和你男友没有那个能力解决这种家庭问题,因为需要很多钱很多精力。不如狠心一点,就当从你这代开始全新开局。其实很庆幸的一点是 LZ 还是个很优秀的人,有自己的独立价值判断,不过做选择的时候还是要谨慎些,因为你以后几十年的人生很可能就是这一两年你的选择就决定了。彩礼这个事情,如果你想平等独立的和你的爱人相处,最好不要拿,除非是对等的你们家也出钱,但这看起来不太可能。
2023-09-21 09:56:22 +08:00
回复了 BeautifulSoap 创建的主题 Go 编程语言 踩到 Go 的 json 解析坑了,如何才能严格解析 json?
@BeautifulSoap #173 如果牵涉面这么广的话,魔改 json 包很可能 break 别的功能吧,基于你的需求,写了一个 toy validator 刚传到 GH ,通过 strcut tag 在`json.Unmarshal` 之前验证: https://github.com/wuxu92/json-validator
2023-09-20 22:27:35 +08:00
回复了 BeautifulSoap 创建的主题 Go 编程语言 踩到 Go 的 json 解析坑了,如何才能严格解析 json?
楼里很多人确实理解错 OP 的问题了,但是楼主因为这个需求魔改 json 包的做法是在难以认同,这不是又给自己挖一个更大的坑,直接问 chatgpt 得到的方案都更好。

When using `json.Unmarshal` in Go, you can define a custom struct type that matches the structure of the JSON data you want to parse. You can also define custom types that implement the `json.Unmarshaler` interface to handle more complex parsing scenarios.

In your case, you can define a custom type for the `int` field that can handle the `null` value. Here's an example:

```go
type NullableInt struct {
Value int
Valid bool
}

func (ni *NullableInt) UnmarshalJSON(data []byte) error {
if string(data) == "null" {
ni.Valid = false
return nil
}
err := json.Unmarshal(data, &ni.Value)
if err != nil {
return err
}
ni.Valid = true
return nil
}
```

In this example, we define a `NullableInt` type that has two fields: `Value` and `Valid`. `Value` holds the integer value if it is not `null`, and `Valid` is a boolean flag that indicates whether the value is valid or not.

The `UnmarshalJSON` method on the `NullableInt` type implements the `json.Unmarshaler` interface. In this method, we first check if the input data is `null`. If it is, we set `Valid` to `false` and return `nil`. If the input data is not `null`, we use `json.Unmarshal` to parse the integer value into `Value`, and set `Valid` to `true`.

With this custom type in place, you can use it in your struct definition to handle `null` values for integer fields:

```go
type MyStruct struct {
MyInt NullableInt `json:"my_int"`
}
```

Now, when you call `json.Unmarshal` on a JSON string that contains a `null` value for `my_int`, the `MyInt` field in the resulting `MyStruct` instance will have `Valid` set to `false`.
2023-09-20 08:30:38 +08:00
回复了 BeautifulSoap 创建的主题 Go 编程语言 踩到 Go 的 json 解析坑了,如何才能严格解析 json?
这只能说是标准库的一种取舍,对你可能不方便,但是对大部分人可能是一种更可接受的行为。并且标准库文档是有明确说明这种行为的 `// By convention, to approximate the behavior of [Unmarshal] itself, // Unmarshalers implement UnmarshalJSON([]byte("null")) as a no-op.`

https://cs.opensource.google/go/go/+/master:src/encoding/json/decode.go;l=117-121;drc=dac9b9ddbd5160c5f4552410f5f8281bd5eed38c

对于 LZ 这种场景,比较好的方案是自己定义一个类型别名,然后给这个类型实现自己的 Unmarshal 接口,实现很简单。如果 LZ 的场景有很多的类型都要考虑 null 要报错,那我觉得可能是设计上有点问题了。

```
type Int int

func (i *Int) UnmarshalJSON(bs []byte) error {
if len(bs) == 0 || bytes.Equal(bs, []byte("null")) {
return fmt.Errorf("need a value")
}
val, err := strconv.ParseInt(string(bs), 10, 64)
if err != nil {
return err
}
*i = Int(val)
return nil
}

type Req struct {
ID Int `json:"id"`
}

var _ json.Unmarshaler = (*Int)(nil)

func TestNULLJSON(t *testing.T) {
var r Req
var args = []struct {
payload []byte
err bool
}{
{
[]byte(`{"id": null}`),
true,
},
{
[]byte(`{"id": 0}`),
false,
},
}
for idx, arg := range args {
if err := json.Unmarshal(arg.payload, &r); (err == nil) == arg.err {
t.Fatalf("%d: want err: %v, but got: %+v", idx, arg.err, err)
}
}
}

```
2023-09-10 10:27:06 +08:00
回复了 iorilu 创建的主题 程序员 有多少人完全使用命令行管理 git 得
@msg7086 啊对对对,你说的对。从事实上说,你说的挺对,字符画的是 gui 。
2023-09-10 08:35:43 +08:00
回复了 iorilu 创建的主题 程序员 有多少人完全使用命令行管理 git 得
@msg7086 tmux 下面也有状态栏,主窗口也是所见即所得,所以 tmux 也是图形界面终端复用器,你是不是有点魔怔为了反对而反对了
2023-09-10 08:33:01 +08:00
回复了 iorilu 创建的主题 程序员 有多少人完全使用命令行管理 git 得
@msg7086 #91 cli 用不明白就觉得 cli 做不了吗,git 的命令行选项太多了,所谓 gui 的复杂操作自动化还不是一个选项组合的事,各有习惯而已何必觉得是别人和你争,难道不是你自己跳出来和别人争
2023-08-22 11:29:27 +08:00
回复了 zhwguest 创建的主题 Go 编程语言 恨死 go 的导出变量命名规则了
id 改 ID ,那再加一个 ID()方法是最简单的。GetID()命名不是推荐的 style 。再说 op 是要暴露给外界读,那加一个方法不是本来就是最优设计?


@ohwind #86 憎恨/恨死了这样的用语可能我用的少,无法共情你们。
2023-08-22 09:25:25 +08:00
回复了 zhwguest 创建的主题 Go 编程语言 恨死 go 的导出变量命名规则了
@ohwind 厌恶可以,恨死就极端了吧。你有见过完美的语言吗?我很想知道 op 或者你换到什么语言了
1  2  3  4  5  6  7  8  9  10 ... 42  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2625 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 29ms · UTC 06:58 · PVG 14:58 · LAX 22:58 · JFK 01:58
Developed with CodeLauncher
♥ Do have faith in what you're doing.