附加到2D字符串切片时的奇怪行为

时间:2019-05-22 00:32:35

标签: string go slice

我正在尝试在Go中实现堆的置换算法。 它应该返回给定输入集的所有可能的排列。

Dao:
@Query("SELECT * FROM check_table")
LiveData<List<DataItem>> getAllItems();

Repository Constructor:
private DataRepository(Application application) {
       DataDatabase database = DataDatabase.getInstance(application);
       dataDao = database.dataDao();
       dataItems = dataDao.getAllData();
   }

ViewModel Constructor:
public DataViewModel(@NonNull Application application) {
        super(application);
        repository = DataRepository.getInstance(application);
        dataItems = repository.getDataItems();
    }

Getter:
public LiveData<List<DataItem>> getDataItems() {
        return dataItems;
    }

Println语句显示预期的输出。返回的out值具有正确的条目数,但是条目都是相同的。请帮助我了解我所缺少的。

1 个答案:

答案 0 :(得分:1)

SELECT TOP 1 nmuloc FROM dbversion ORDER BY convert(integer, parsename(nmuloc, 4)) DESC, convert(integer, parsename(nmuloc, 3)) DESC, convert(integer, parsename(nmuloc, 2)) DESC, convert(integer, parsename(nmuloc, 1)) DESC; 的值从未更改,因此in中的每个元素都具有相同的值。 out包含slice头,它是指向基础数组,长度和容量的指针。您正在更改数组中的值,但slice头保持不变。我认为您想在for循环中复制in的副本,以便每次都在不同的数组上进行操作:

in

有关切片如何工作的说明,请参见https://blog.golang.org/go-slices-usage-and-internals