小编Blu*_*Bot的帖子

解组接口{}然后执行类型断言

string通过一个rabbitmq消息系统.发送之前,

我使用json.Marshal,转换结果string并通过rabbitmq发送.

我转换和发送的结构可以是:(更改了结构的名称和大小,但它无关紧要)

type Somthing1 struct{
   Thing        string    `json:"thing"`
   OtherThing   int64     `json:"other_thing"`
}
Run Code Online (Sandbox Code Playgroud)

要么

type Somthing2 struct{
   Croc        int       `json:"croc"`
   Odile       bool      `json:"odile"`
}
Run Code Online (Sandbox Code Playgroud)

消息完美地作为a string打印并打印在另一侧(某些服务器)

到目前为止一切正常.现在我正在尝试将它们转换回结构并断言类型.

第一次尝试是:

func typeAssert(msg string) {

 var input interface{}

 json.Unmarshal([]byte(msg), &input)

 switch input.(type){
 case Somthing1:
    job := Somthing1{}
    job = input.(Somthing1)
    queueResults(job)

  case Somthing2:
    stats := Somthing2{}
    stats = input.(Somthing2)
    queueStatsRes(stats)
 default:
}
Run Code Online (Sandbox Code Playgroud)

这不起作用.在打印input解组后的类型时,我得到map[string]interface{}(?!?)

甚至比这更奇怪,地图键是我得到的字符串,地图值是空的.

我做了一些其他的尝试,如:

 func typeAssert(msg string) {

  var input interface{} …
Run Code Online (Sandbox Code Playgroud)

go rabbitmq

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

如何从Golang中的字符串中修剪"["char

可能是一个愚蠢的事情,但有点卡在它上面......

无法修剪"["字符串中的字符,我尝试输出的内容:

package main

import (
    "fmt"
    "strings"
)

func main() {
    s := "this[things]I would like to remove"
    t := strings.Trim(s, "[")

    fmt.Printf("%s\n", t)   
}

// output: this[things]I would like to remove
Run Code Online (Sandbox Code Playgroud)

去操场

还尝试了所有这些,没有成功:

s := "this [ things]I would like to remove"
t := strings.Trim(s, " [ ")
// output: this [ things]I would like to remove


s := "this [ things]I would like to remove"
t := strings.Trim(s, "[")
// output: this [ things]I would …
Run Code Online (Sandbox Code Playgroud)

string trim go

18
推荐指数
1
解决办法
3万
查看次数

Windows 屏幕比例弄乱了 css 大小

有一个奇怪的问题,在某些笔记本电脑的屏幕设置中的 Windows 10 上,默认值(推荐)是 125% 所以当打开网页时一切都很大,因为页面是为 100% 构建的

如何处理?css?JS?老实说不知道如何处理这个

细节:

  • 使用 React 构建的 Web 应用程序。
  • 100% 一切都正确缩放
  • 从有问题的笔记本电脑上正确缩放其他网站(设置为 125%)
  • 有问题的笔记本电脑(不知道这是否相关) Lenevo yoga 730 15inch

谢谢

javascript css reactjs

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

获取TabLayout选项卡的textview

我想以编程方式更改选项卡的textview.有没有办法做到这一点?

有关旧TabHost视图的答案,我正在使用Google的Material Design库使用的TabLayout android.support.design.widget.TabLayout.

对于TabHost: 如何将填充添加到选项卡标签?

tabs android material-design android-tablayout

8
推荐指数
3
解决办法
8634
查看次数

将子组件连接到存储与将父组件连接到存储并传递道具

经过大量搜索并使用React和React Native。对于哪种方法最好使用以及什么情况下,我仍然存在模糊的看法

  1. 将父组件连接到商店,并将所有数据作为道具传递给子功能组件。我最初使用的是“ React”方式,但很快我就发现随着应用程序的增长,该父组件处理的逻辑量开始变得又大又混乱。子组件也开始拥有自己的子组件,因此等等。

  2. 具有父组件(Screen例如)可以正常工作,并且每个需要商店中信息的子组件都将与其连接。这是更“干净”的解决方案,但会创建许多不必要的存储连接“重复项”。

使用Redux存储

我的问题通常是哪个更推荐使用的模式以及在哪些用例中,也很高兴知道拥有大量连接的(容器)组件的价格是多少

javascript reactjs react-native react-redux

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

尝试从文件和目录创建tar.gz文件时出现"写太长"错误

所以我试图从多个目录和文件中创建tar.gz文件.具有相同用法的东西:

tar -cvzf sometarfile.tar.gz somedir/ someotherdir/ somefile.json somefile.xml
Run Code Online (Sandbox Code Playgroud)

假设目录中包含其他目录.我有这个作为输入:

    paths := []string{
      "somedir/",
      "someotherdir/",
      "somefile.json",
      "somefile.xml",
    }
Run Code Online (Sandbox Code Playgroud)

并使用这些:

    func TarFilesDirs(paths []string, tarFilePath string ) error {
       // set up the output file
       file, err := os.Create(tarFilePath)
       if err != nil {
           return err
       }

       defer file.Close()
       // set up the gzip writer
       gz := gzip.NewWriter(file)
       defer gz.Close()

       tw := tar.NewWriter(gz)
       defer tw.Close()

       // add each file/dir as needed into the current tar archive
       for _,i := range paths {
          if …
Run Code Online (Sandbox Code Playgroud)

gzip tar go

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

什么是for循环与select和仅选择之间的区别?

无法从文档或谷歌完全理解它:

两者之间有什么区别,在哪种情况下你会使用哪一种?

    for{
       select{
       case s := <-something:
           fmt.Println(s)
       case done := <-true:
           return 
       }
    }
Run Code Online (Sandbox Code Playgroud)

       select{
       case s := <-something:
           fmt.Println(s)
       case done := <-true:
           return 
       }
Run Code Online (Sandbox Code Playgroud)

谢谢

go goroutine

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

如何在几秒钟内获得一个月

未能做一些相当简单的事情,无法从谷歌叔叔或这里找到答案

我试图在几秒钟内获得一整月(一个整数)比这更优雅的东西:

    s := 3600 * 24 * 30
Run Code Online (Sandbox Code Playgroud)

还尝试过:

    m := time.Hour * 24 * 30
Run Code Online (Sandbox Code Playgroud)

但这返回类型“time.Duration”,我也无法将其转换为 int

注意:不太关心每个月的新闻日(28-31),但如果可以使用特定月份作为输入,那就太好了。

我不是 Goxpert,所以去吧(看看我在那里做了什么?)对我轻松一点..

提前致谢。

go

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