我正在尝试在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值具有正确的条目数,但是条目都是相同的。请帮助我了解我所缺少的。
答案 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。